当子类继承父类时,
new一个子类赋值给父类变量时,若父类中的方法,子类中也有时,调用的方法是子类的,否则,就是父类的。
同理, new一个子类赋值给父类接口变量时,若子类含有与接口父类重名的方法,则调用子类的方法。
父类变量不可以调用子类有,父类没有的子类方法,只能调用子类重写父类的方法。
package com.wh.d3inherited;
/**
* @author 王恒
* @datetime 2017年4月14日 下午3:07:23
* @description
*
*/
public class TestStudent {
public static void main(String[] args) {
Person p=new Student();
System.out.println("---------------------以下 是Person声明,Student类new出来的对象");
p.info();
p.display();//调用的Persond的方法 student重写了person的display方法
Person p2 = new Person();
System.out.println("---------------------以下 是Person声明,Person类new出来的对象");
p2.info();
p2.display();
/**
* 运行结果:
*
* ---------------------以下 是Person声明,Student类new出来的对象
* Person的info
* 这是Student的常规display方法!!!
* ---------------------以下 是Person声明,Person类new出来的对象
* Person的info
* Person的display
*
*
* 结论:创建一个对象时,若是由子类new出来的对象赋给父类变量
*/
}
}