L'ereditarietà è il nucleo della programmazione orientata agli oggetti . Costruire strutture di classe rende i programmi più piccoli programmi di facile e ampia possibile. In Ruby , l'eredità viene utilizzato per creare una relazione tra classi che possono essere utilizzati nel codice. Quando una classe è un tipo di una classe diversa , è possibile utilizzare l'ereditarietà per fare "classi minori " . Ad esempio , si potrebbe avere una classe Shape . Rendere le classi di bambini della classe Shape , come un cerchio o di classe Square , indica un metodo che accetta un argomento Shape potrebbe anche prendere un cerchio come un tipo di forma. Istruzioni
utilizzare l'ereditarietà in Ruby
1
Inizia con una base ( o "super" ) di classe . L'esempio seguente utilizza una classe denominata Microonde : classe Microwavedef put_food_in (cibo) @ cibo = foodenddef take_food_outfood = @ cibo @ cibo = nilreturn foodenddef turn_onputs " Microwave è su" end def turn_off mette " a microonde è spento " endend
2
Scrivi una dichiarazione classe ereditata . Questo è lo stesso di una dichiarazione di classe normale , ma aggiunge la "classe TimedMicrowave fine
3
aggiungere nuovi metodi alla classe . La classe avrà tutti i metodi della superclasse , come . ben eventuali ulteriori metodi che aggiungi è inoltre possibile aggiungere nuove variabili membro e attr_ * funzioni di accesso : classe TimedMicrowave attr_reader : timerdef set_timer ( secondi) @ timer = secondsend def clear_timer @ timer = 0endend
4 metodi di override
nella superclasse con nuovi metodi . Dal momento che nel precedente esempio un timer è stato inserito il forno a microonde , un metodo turn_on che spegne automaticamente il forno spento può ora essere attuato. definire semplicemente un metodo con lo stesso nome del metodo nella superclasse . quando si chiama il metodo nella classe bambino avrà la precedenza il metodo della superclasse Qui , qualsiasi codice che si aspetta di vedere un oggetto a microonde in grado di utilizzare un oggetto TimedMicrowave : . classe TimedMicrowave attr_reader : timerdef set_timer ( secondi) @ timer = secondsenddef clear_timer @ timer = 0enddef turn_onwhile @ timer > 0puts Microonde " è acceso. # { @ } timer secondo ( s ) rimanendo " @ timer - . = 1sleep 1end # Abbiamo finito la cottura , spegnere il forno a microonde offturn_offendend