Ich habe mit Vererbung und Polymorphismus herumgespielt. Der Ausdruck des folgenden Codes ist: Student 1 Person 1 Undergrad 2. So habe ich zwei Fragen:wie man eine Methode aufruft, ohne ihre Unterklasse aufzurufen
Warum fügt Java automatisch ein This ein, wenn ich method2() in der Student-Klasse aufrufen? Was wäre, wenn statt des ursprünglichen Ausdrucks ich Student 1 Person 1 Student 2 ausdrucken wollte. Wie würde ich method2 der Student-Klasse explizit aufrufen?
Ich habe 3 Klassen, die Klasse Person:
public class Person {
public static void main(String[] args) {
Person u = new Undergrad();
u.method1();
}
public void method1() {
System.out.print("Person 1 ");
}
public void method2(){
System.out.print("Person 2 ");
}
}
Der Student Klasse
public class Student extends Person {
public void method1(){
System.out.print("Student 1 ");
super.method1();
method2();
}
public void method2(){
System.out.print("Student 2");
}
}
Und die Nichtgraduiertentwurf Klasse:
public class Undergrad extends Student{
public void method2(){
System.out.print("Undergrad 2 ");
}
}
Sie haben die 'method2' in' Undergrad' überschrieben und auf ein Objekt der 'Undergrad' Klasse geklickt. Also heißt die überschriebene 'Methode2', weil das der springende Punkt der Polymorphie ist. Wenn Sie möchten, dass die überschriebene Methode Methoden ihrer Oberklassen aufruft, müssen Sie sie in die Methode einprogrammieren. –