微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图理解java中的类继承

让我说我有超级班

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,它“掩盖”(a.k.a.覆盖)基本行为,在这种情况下通过打印“from subclass2”而不是.

这样,如果你创建一个类SuperSub的对象,它仍然会表现为SuperSub.分别如果你创建了一个SubClass2类的对象,它的行为就像SuperSub一样,你在SubClass2中定义了“扩展”(在这种情况下是被覆盖的行为).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐