Ho letto una volta in un libro sull'eccezione dove "un oggetto di tipo Eccezione può essere un'istanza di qualsiasi sottoclasse di Eccezione ". Ho capito, ma c'è ancora confusione, qualcuno può chiarirmi il significato di questo?
Ho letto una volta in un libro sull'eccezione dove "un oggetto di tipo Eccezione può essere un'istanza di qualsiasi sottoclasse di Eccezione ". Ho capito, ma c'è ancora confusione, qualcuno può chiarirmi il significato di questo?
Autore significa dire che i puntatori di classe base possono puntare a qualsiasi oggetto di classi derivate.
Una classe derivata avrà i membri pubblici / protetti della classe base. Quindi, il casting è implicito e non dannoso.
Esempio:
Abbiamo una classe vehicle
.
La classe car
è derivata da esso, e così è truck
.
Quindi, se crei un oggetto di tipo car
o truck
, l'oggetto può ovviamente puntare alla sua classe base vehicle
. %codice%. Una macchina This crux of it is the is-a relationship
veicolo.
Il punto a cui l'autore sta arrivando è quando hai una variabile dichiarata di tipo Exception
, l'oggetto reale assegnato a quella variabile non è necessariamente un'istanza di Exception
stessa - potrebbe anche essere una qualsiasi di le sottoclassi di Exception
.
Le sottoclassi di eccezioni sono costituite da oggetti che estendono Eccezione, ovvero NullPointerException, ClassNotFoundException, OutOfRangeException. Solo le sottoclassi di Exception saranno mai un oggetto Exception.
Da wikipedia ;
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects.
Boxer, Beagle, Collie = Sottoclassi di Cane
Il punto del polimorfismo è che gli oggetti di una certa classe possono essere trattati allo stesso modo degli oggetti della loro classe genitore, sebbene il loro comportamento possa essere diverso.
L'esempio principale in Java è la classe Object. Tutte le altre classi in Java sono sottoclassi di Object e possono quindi essere utilizzate ovunque sia possibile Object. Una lista è una collezione ordinata di oggetti - quindi (almeno prima di Java 1.5) una lista può contenere 3 oggetti Foo, 14 oggetti Bar e un singolo oggetto Bat. Non si sa necessariamente in anticipo quale sia la classe reale degli oggetti nella Lista, eccetto che si tratta di Oggetti.
Un altro buon esempio in Java è la classe Number. Un numero intero è un numero, quindi ovunque sia possibile utilizzare un numero, è possibile utilizzare un numero intero o una qualsiasi delle sottoclassi di numero (lungo, mobile, doppio, breve, grande, numero atomico, ecc.). Tutte queste sottoclassi di Numero sono un po 'diverse - I float rappresentano i numeri reali, mentre gli interi rappresentano gli interi - ma sono tutti numeri e quindi possono essere descritti e consultati in termini di numeri.
Leggi altre domande sui tag polymorphism