多态
编译时与运行时类型不一直,就会产生多态
前提:需要存在继承或者实现关,要有覆盖操作
子类可以看作是特殊的父类,所以父类类型的引用可以指向子类的对象:向上转型
//把子类的对象可以给父类的类型的变量引用
一个引用类型变量如果申明为父类的类型,但实际引用的是子类对象,那么爱变量就不能再访问子类中添加的方法和属性
属性是在编译时确定的
Person e = new Student();
e.school = “ntu”;//错误
编译时e为Person类型,没有school成员变量,所以错误
方法是在运行时确定的:动态绑定
Person e = new Student();
e.showInfo();//调用的是Student类的方法
java的方法是允许再stack中的,在运行方法时会动态的进栈出栈
当前的情况是Student对象的方法
成员方法:(成员方法的多态性,也就是动态绑定,必须得存在于方法的重写上)
编译时:要查看引用变量所属的类中是否有所调用的方法
运行时:调用实际对象所属的类中的重写方法
成员变量:
不具备多态性,只看引用变量所属的类