在阅读关于java se的资料中,经常出现父类 a=new 子类()类似的代码,对此表示疑惑,现在在此记录下。
创建父类Animal以及相关子类
package com.test.entity;
public class Animal {
public void say(){
System.out.println("animal");
}
public void fatherSay(){
System.out.println("father");
}
}
package com.test.entity;
public class Dog extends Animal{
public void say(){
System.out.println("dog");
}
public void run(){
System.out.println("dog run");
}
}
package com.test.entity;
public class Cat extends Animal{
public void say(){
System.out.println("cat");
}
}
问题1:父类a=new 子类可以吗?
答:可以,但是父类a只能使用被子类重写的方法,而无法使用子类自己的方法,a是父类的引用,指向了一个子类对象。
调用a.say,进入子类的方法,输出dog,而调用a.run则会报错
问题2:子类b=new 父类可以吗?
答:不可以
如图所示,报错
问题3:子类b=new 子类c可以吗?
答:不可以
如图所示,报错
另外,子类可以使用父类的方法