So che questa è una domanda molto semplice, ma ho lavorato in Python per un periodo piuttosto lungo e ora che devo tornare a Java, mi sembra di avere problemi cambiando il chip e avvolgendomi attorno al polimorfismo di base di Java.Identifica la firma del metodo utilizzando classi ereditate nei metodi astratti di Java
È possibile sovrascrivere (implementare, per essere precisi) un metodo di classe 'abstract
in Java utilizzando una delle classi ereditate come argomento?
Mi spiego con un esempio molto semplice (in seguito alla "quasi ufficiale"example con forme)
class Shape {}
class Circle extends Shape {}
class Triangle extends Shape {}
abstract class ShapeDrawer {
abstract void draw(Shape s);
}
class CircleDrawer extends ShapeDrawer {
void draw(Circle c){
System.out.println("Drawing circle");
}
}
non v'è alcun modo di avere Java identificare il metodo draw
nella classe CircleDrawer
come l'implementazione dell'aspetto draw
in ShapeDrawer
? (La classe Circle
si estende da Shape
dopo tutto)
altrimenti presentati: Quello che mi piace è che il metodo della classe CircleDrawer
draw
accetta solo le istanze di tipo Circle
, ma allo stesso tempo, vorrei dire il compilatore Java che lo void draw(Circle c)
è in realtà l'implementazione del metodo astratto abstract void draw(Shape s)
situato nella sua classe genitore.
Grazie in anticipo.
Forse sto leggendo questo errore, ma se questo non è ciò che vuoi puoi fornire un esempio di ciò che vuoi? – Aify
@Aify, ho modificato la domanda descrivendo cosa avrei voluto ottenere. Speriamo sia più chiaro ora? Fammi sapere se non lo è. – BorrajaX
Non dimenticare di spegnere prima di estrarre il chip. – markspace