public class SuperClass
{
public void method1()
{
System.out.println("superclass method1");
this.method2();
}
public void method2()
{
System.out.println("superclass method2");
}
}
public class SubClass extends SuperClass
{
@Override
public void method1()
{
System.out.println("subclass method1");
super.method1();
}
@Override
public void method2()
{
System.out.println("subclass method2");
}
}
public class Demo
{
public static void main(String[] args)
{
SubClass mSubClass = new SubClass();
mSubClass.method1();
}
}
mon résultat attendu :
sous-classe méthode1
superclasse méthode1
superclasse méthode2
la production réelle :
sous-classe méthode1
superclasse méthode1
sous-classe méthode2
Je sais que techniquement j'ai surchargé une méthode publique, mais je pensais que parce que j'appelais le super, tous les appels à l'intérieur du super resteraient dans le super, ce qui n'est pas le cas. Comment faire pour qu'il en soit ainsi ?
2 votes
Je soupçonne que vous voudriez "préférer la composition à l'héritage".