java 父类引用调用方法问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 04:49:57
父类Person,它有一个子类Student.
Student里有一个新定义的方法myEnjoy(),这个方法父类里没有。

Person p = new Student;

p.myEnjoy()可以调用吗?为什么?

不可以,因为使用多态时方法的调用是基于引用类型,你的引用类型是父类,而父类没有对应方法,虽然如果父类存在该方法,调用时用调用子类重写的方法,但这是另外一个概念了.

不可以调用,你说的这种情况,父类会隐藏子类的myEnjoy()方法,所以你用p.是看不见这个方法的。

不是吧 怎么说的都好高深啊
其实就是person 的对象不能调用子类的啊 只有子类可以调用父类的啊就是这样的

不可以,因为你在创建实例的时候已经向上转型了,而向上转型就会丢失之类的属性以及方法,所以不能再调用之类的方法,如果想调用之类方法,要么别向上转型,要么再转下来,就是向下转型

用继承吧或者用接口就可以实现这样类似的功能了

如果真要这么做,可以把p强制转化成Student
Student s = (Student)p;