Arv är kärnan i objektorienterad programmering . Bygga klass strukturer gör mindre program enkelt , och stora program möjligt . I Ruby är arv används för att skapa en relation mellan klasser som kan användas i din kod . När en klass är en typ av en annan klass , kan du använda arv att göra " underordnade klasser " . Till exempel kan du ha en Shape klass . Göra barn klasser av klassen Shape , som en cirkel eller en fyrkant klass , en metod som tar en Shape argument också kunde ta en cirkel som en typ av form . Instruktioner Zazzle.se Använd Arv i Ruby
1
Börja med en bas ( eller " super " ) klassen . I följande exempel används en klass som heter Microwave : klass Microwavedef put_food_in ( mat ) @ mat = foodenddef take_food_outfood = @ mat @ mat = nilreturn foodenddef turn_onputs " Microwave är på " end def turn_off sätter " Microwave är off " endend
2
Skriv en ärvd klass uttalande . Detta är samma sak som en vanlig klass uttalande , men tillägger " klassen TimedMicrowave end
3
Lägg nya metoder i klassen . Klassen kommer att ha alla de metoder i superklassen , som . väl ytterligare metoder som du lägger du kan också lägga till nya medlemsländer variabler och attr_ * accessors : klass TimedMicrowave attr_reader : timerdef set_timer ( sekunder ) @ timer = secondsend def clear_timer @ timer = 0endend
4
Åsidosätt metoder i superklass med nya metoder . Sedan i föregående exempel en timer sattes till mikrovågsugn , en turn_on metod som automatiskt stänger av mikrovågsugn off kan nu genomföras . Helt enkelt definiera en metod med samma namn som metoden i superklassen . när det kallas , kommer metoden i barnet klassen åsidosätter metoden från superklassen Här kan all kod som räknar med att se en mikrovågsugn objektet använder en TimedMicrowave objekt : . klass TimedMicrowave attr_reader : timerdef set_timer ( sekunder ) @ timer = secondsenddef clear_timer @ timer = 0enddef turn_onwhile @ timer > 0puts " Microwave är på . # { @ timer } sekund (s ) kvar " @ timer - . = 1sleep 1end # Vi är klar matlagning , vrid mikrovågsugn offturn_offendend