黑马程序员技术交流社区

标题: 父类引用指向子类对象的问题 [打印本页]

作者: 龚东阳    时间: 2012-9-12 17:17
标题: 父类引用指向子类对象的问题

假设一个父类引用指向子类对象是Father f=new Son();  
那么这个父类引用指向子类对象的意思是在用父类f调用方法的时候只能调用子类中被重写的方法,而且还是父类中必须包含的方法,不能调用子类特有的方法,这样解释对吗?
而且父类的方法不用写实现,对么?


作者: 李菁    时间: 2012-9-12 17:30
Father f=new Son();
定义一个父类类型的引用指向一个子类的对象,既可以使用子类增强的方法,又可以抽取父类的共性。
父类类型的引用可以调用父类中定义的所有属性和方法,但是对子类中定义而父类中没有定义的方法,不能调用。
父类中的方法只有在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用。
作者: 尤圣回    时间: 2012-9-12 17:41
这个就好比 比人找你老毕 可是老毕不在 只能找小毕 小毕 有老毕的方法 不过比老毕给厉害。
作者: 龚东阳    时间: 2012-9-12 17:46
李菁 发表于 2012-9-12 17:30
Father f=new Son();
定义一个父类类型的引用指向一个子类的对象,既可以使用子类增强的方法,又可以抽取 ...

父类的方法有,但没实现,子类不用必须重写方法么?
作者: 杨震    时间: 2012-9-12 17:47
凡是父类有的的方法,都可以调用,并且只能调用父类有的方法.如果该方法已经被子类重写,则实际上是调用子类重写的方法;

方法调用是基于你所定义的变量的类型的,而不是变量引用的对象的类型,由于这里引用变量是父类型,所以他调用的方法必须是父类里面有的,否则编译不会通过,如果调用方法在变量引用的子类对象中已经重写,则实际调用的是重写的方法
作者: 尤圣回    时间: 2012-9-12 17:48
继承父类不用  继承接口必须重写所以方法
作者: 李菁    时间: 2012-9-12 21:26
龚东阳 发表于 2012-9-12 17:46
父类的方法有,但没实现,子类不用必须重写方法么?

子类不用重写父类全部方法,想增强父类哪个方法的代码就重写哪个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2