父类句柄指向子类对象与子类句柄指向子类对象的区别

来源:百度知道 编辑:UC知道 时间:2024/09/27 05:47:00
在JAVA中,父类句柄指向子类对象与子类句柄指向子类对象有什么区别?

楼主是想问多态吧~

举个例子吧
比如Person类和Student类 其中Student类继承了Person类

Person p = new Student();
Person类的变量p,但真正指向的却是子类Student,这时变量p可以调用父类中定义的方法,但具体到执行方法时却有看的是子类重写后的方法(这就是虚方法调用)。
此时p是不能调用子类新“添加"的方法的。

而Student s = new Person();是不被允许的,编译是无法通过的。
可以简单的理解为,“人”所具备的特征属性,“学生”都具有,但“学生”具备的特征与属性并不是“人”都具备的。比如“学生”可以有“学校”“班级”等属性,但并不是“人”具备的。而“人”具备的“姓名”,“年龄”属性,“学生”是可以具备的。