java - "ParentClass objectName1= new SubClass() "和 "SubClass objectName2 = new SubClass()"有什么区别?

标签 java inheritance

我想知道在从另一个扩展的类中创建对象的这两种方法之间是否存在任何功能差异。

我只是在处理基本的继承,除了 Cat extends Mammal 之类的东西之外没有什么复杂的。

最佳答案

ParentClass objectName = new SubClass() - 父类引用持有子类对象

class ParentClass{
 void m1(){
   System.out.println("parent m1");
  }
 void m2(){
   System.out.println("parent m2");
  }
}

class SubClass extends ParentClass{
//subclass overriding parent class m1 method
 @Override
 void m1(){
   System.out.println("child m1");
  }
 void m3(){
   System.out.println("child m3");
  }
}

class Test{
public static void main(String[] args){
  ParentClass p = new SubClass();
  p.m1();// out puts child m1 as child class is overriding m1 method
  p.m2();//out puts parent m2 as child class is not overriding m2 method
  p.m3();//gives compile time error as parent class reference doesn't know about m3 method

}
}

关于java - "ParentClass objectName1= new SubClass() "和 "SubClass objectName2 = new SubClass()"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24218852/

相关文章:

java - 有没有一种方法,例如使用 @JsonFilter 来仅打印 HashMap 的值?

java - 使用一致的电话号码作为 ID

java - 在 Java 中,是否有更好的方法来替代 getter 和 setter 方法?

java - 将 mat 从 java 传递到 c++ jni android arm64-v8a 32/64 位的问题

javascript - 使用 Google Closure 的继承

java - 文件的多线程读写,无法停止操作,写入错误文件

c++ - 如何将对象的 parent 分配给QObjectList?

java - 如何在 Java 中使用 @inherited 注解?

C++数组的继承

c++ - C++ 中的继承 : define variables in parent-child classes