可以说我有超级班

public class SuperSub {
  public void overideThisMethod(){
    System.out.println("Printed from Superclass");
  }
}

我有一个这样的子类,
public class SubClass2 extends SuperSub {
  @Override
  public void overideThisMethod(){
    System.out.println("from subclass2");
  }
  public static void main(String[] args){
    SubClass2 subClass2= new SubClass2();
    subClass2.overideThisMethod();
    SuperSub superSub = new SuperSub();
    superSub.overideThisMethod();
  }
}

我从运行程序时得到输出:
run:
from subclass2
Printed from Superclass

如果输出不是,
run:
from subclass2
from subclass2

任何澄清都非常感谢,谢谢!

最佳答案

扩展(也称为继承)不会修改超类,但是实际上使用定义的扩展名创建了一个新类,例如那里的覆盖。

因此,两个类都存在,每个类都有自己的逻辑。

在这里,您将创建一个名为SuperSub的类,该类将打印“从超类打印”。然后,您将其用作基础来创建另一个类SubClass2,它“掩盖”(也称为覆盖)基本行为,在这种情况下,通过打印“from subclass2”。

这样,如果您创建类 SuperSub 的对象,则该对象仍将表现为 SuperSub
分别地,如果您创建类 SubClass2 的对象,则其行为类似于 SuperSub ,带有您在 SubClass2 中定义的“扩展名”(在本例中为重写行为)。

关于java - 试图了解Java中的类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50340120/

10-10 09:51