Inheritance is de kern van object georiënteerd programmeren . Bouwen klasse structuren maakt kleinere programma's gemakkelijk , en grote programma's mogelijk . In Ruby , overerving wordt gebruikt om een relatie tussen de klassen die kunnen worden gebruikt in de code. Wanneer een klasse is een type van een andere klasse , kunt u gebruik maken van overerving om " kind klassen " te maken . Bijvoorbeeld , zou u een klasse Shape hebben . Making kind klassen van de klasse Shape , zoals een cirkel of vierkant klasse , betekent een methode die een vorm argument neemt kan ook een cirkel te nemen als een soort vorm . Instructies Gebruik Inheritance in Ruby Start 1 met een base ( of " super " ) klasse . Het volgende voorbeeld wordt een klasse met de naam Magnetron : klasse Microwavedef put_food_in ( food ) @ food = foodenddef take_food_outfood = @ food @ food = nilreturn foodenddef turn_onputs " Magnetron is op " end def turn_off zet " Microwave is uitgeschakeld " endend 2 Schrijf een erfelijke klasse statement . Dit is hetzelfde als een normale klasse statement , maar voegt de " class TimedMicrowave einde 3 Voeg nieuwe methoden aan de klasse . De klasse zal alle van de methoden van de superklasse hebben , zoals . klasse TimedMicrowave attr_reader : : timerdef set_timer ( seconden ) @ timer = secondsend def clear_timer @ timer = 0endend Override methoden 4 en eventuele aanvullende methoden die u toevoegt u kunt ook nieuwe lid variabelen en attr_ * accessors voegen in de superklasse met nieuwe methoden . aangezien in het voorgaande voorbeeld een timer om de magnetron , een turn_on methode die automatisch schakelt de magnetron uitgeschakeld kan nu worden uitgevoerd . Definieer een werkwijze met dezelfde naam als de methode in de superklasse werd toegevoegd . wanneer het heet , zal de methode in de klas kind de methode van de superklasse overschrijven Hier kan elke code die verwacht een magnetron object ziet een TimedMicrowave object te gebruiken : . klasse TimedMicrowave attr_reader : timerdef set_timer ( seconden ) @ timer = secondsenddef clear_timer @ timer = 0enddef turn_onwhile @ timer > 0puts " Magnetron is op . # { @ timer } seconde (n ) resterende " @ timer - . = 1sleep 1end # We zijn klaar koken , zet de magnetron offturn_offendend
|