Ich habe es schwer, einige Prinzipien über das Übersteuern und Überladen zu verstehen.Java-Methode Auswahl mit Überladung und Überschreiben
public class Figure{
public void stampa(Figure f){
System.out.println("Figure");
}
}
public class Square extends Figure{
public void stampa(Square q){
System.out.println("Square");
}
}
public class Rectangle extends Square{
public void stampa(Rectangle r){
System.out.println("Rectangle");
}
public void stampa(Square r){
System.out.println("Particular Rectangle");
}
public void stampa(Figure f){
System.out.println("Particular Figure");
}
}
public class Test{
public static void main(String args[]){
Figure f1,f2;
Square q = new Rectangle();
Rectangle r = new Rectangle();
f1 = new Square();
f2 = new Rectangle();
f1.stampa(f2); //Figure
q.stampa(r); //Particular Rectangle
f1.stampa(q); //Figure
q.stampa(f1); //Particular Figure
q.stampa(q); //Particupar Rectangle
}
}
Ich weiß, dass public void stampa(Square q)
public void stampa(Figure f)
ist Überlastung und overrding es nicht.
Und und public void stampa(Figure f)
überladen auch public void stampa(Square q)
.
Auch public void stampa(Square q)
in Rectangle-Klasse überschreibt die Methode in Square-Klasse.
Erste Frage
es zu diesem Ergebnis: q.stampa(f1); //Particular Figure
Ich weiß, dass zum Zeitpunkt der Kompilierung q
ist ein Square
so werde ich bei dieser Methode sucht public void stampa(Square q)
in Square
Klasse. und zur Laufzeit q
ist Rectangle
so dachte ich, könnte das Ergebnis „Besondere Rectangle“ statt „Besonderen Bild“ seine
nicht sicher, was ich falsch mache
Zweite Frage
Wenn in diesem Moment Rectangle
erstreckt Figure
und nicht mehr Square
, werde ich sicher Kompilierungsfehler auf Square q = new Rectangle();
haben, was mit dem Varibale geschieht q
(es wird eine solche Variable als Square q
oder wir haben werden, habe keine v Arible mit Namen q?) und was wird das Ergebnis von q.stampa(f1);
Vielen Dank und Entschuldigung für mein Englisch und bitte korrigieren Sie mich, wenn ich falsch liege.
* "Zweite Frage" * ... Nein, nur eine Frage pro Beitrag, nicht zwei. – Tom
Ihre Klasse ist definiert als 'Figura'. Wenn dies nicht nur ein Tipp zum Kopieren und Einfügen ist, würde dies einige Probleme verursachen. – kunruh
@kunruh Danke, ich reparierte es – totoro