黑马程序员技术交流社区

标题: 关于重写的问题 [打印本页]

作者: zlpiano    时间: 2015-7-2 18:04
标题: 关于重写的问题
子类对象能否调用父类中被重写的方法
作者: 燃烧的灵魂    时间: 2015-7-2 19:28
在同一个类中没有重写这种说法,而对于第三个类来说它两个同时继承一个类,但是它两个没有关系(类是单继承,多层继承),因此也不可以调用(可以这样理解,重写增加了自己的特殊功能,所以即使被调用对其他类也没有意义)
作者: 慕容旺财    时间: 2015-7-4 18:58
你的意思是调用父类中被其他子类重写的方法么?如果是这样 那是不行的 因为调用这个方法的子类没有这个方法
作者: dragonsoull    时间: 2015-7-4 20:05
应该不行的,除非你在子类中定义了getParentMethod()之类的函数,不过这样做重写就显得没意义了。
作者: 放养的饼干    时间: 2015-7-4 20:34
父类中不存在重写不重写吧?子类重写父类方法没有改变父类。
作者: dadai5ai    时间: 2015-7-4 20:36
可以的,使用     super.父类方法     就可以调用,要注意的是要放在子类代码第一行,还有就是不能和this()同时出现
作者: zlpiano    时间: 2015-7-4 23:45
本帖最后由 zlpiano 于 2015-7-5 00:02 编辑

可以调用么?受教了。不过好像只能在子类内部调用。
作者: xiaoxinxin003    时间: 2015-7-5 02:13
只有继承了或者实现某个接口才有复写
作者: samove    时间: 2015-7-5 09:01
不能,就像父类中的private保护内容一样,被重写的方法,已经看不见了。
作者: fantianfei    时间: 2015-7-5 09:08
我感觉应该也是可以的,以后会接触到多层继承吧。
作者: Ruby    时间: 2015-7-5 09:11
可以的 super关键字
作者: 虾米吃螃蟹    时间: 2015-7-5 09:26
一个人分别照平面镜和哈哈镜,显示的人样不同但是人本身没变。A和B继承与C,B重写了C也只是在B自己的类中改变了。并不能改变父类C本身
作者: wgy    时间: 2015-7-5 10:01
   子类对象能否调用父类中被重写的方法?
   这个是可以的,要想使用父类中被重写的方法,格式:super.被子类重写的方法。举个简单的例子如下:
测试类:  public class DemoTest {        public static void main(String[] args) {
                DemoZi dz = new DemoZi();
                dz.show();
        }
}

子类:
public class DemoZi extends DemoFu {
        public void show(){
                super.show();//调用父类中被子类重写的方法
                System.out.println("show zi");
        }
}
父类:
public class DemoFu {
        public void show(){
                System.out.println("show fu");
        }
        public void show2(){
                System.out.println("show2 fu");
        }
}

打印结果:
       show fu
       show zi
   从上面的例子可以看出,子类是可以调用父类中被重写的方法的。希望对你有用。

作者: mls123456    时间: 2015-7-5 10:44
如果已经是一个子类对象了。  它就不可能调用你类的方法了。 子类的方法已经覆盖了父类的方法。
作者: wengjialiang    时间: 2015-7-5 15:57
可以使用 super.父类方法
作者: pathnet    时间: 2015-7-5 20:37
可以继承
作者: danil_xx    时间: 2015-7-5 21:02
子类的方法已经覆盖了父类的方法了,怎么还能调用父类的呢,其实这个问题自己写两个类测试一下就很明白了
作者: wuwenwen3779    时间: 2015-7-5 22:14
父类的方法可以被子类重写,子类调的是它自己重写的,或者直接调父类本来的那个,但它也是继承下来的
作者: 柳叶飞刀    时间: 2015-7-5 22:39
可以的。如果想使用父类中的只需要用super.方法名调用即可
作者: 通往牛逼的路上    时间: 2015-7-5 22:52
子类的方法复写了父类的方法,可以直接调用父类的方法。。。
作者: 122125241    时间: 2015-7-5 22:54
子类可以调用父类中被重写的方法,但是这是编译的时候父类有这个方法没有报错,如果没有直接编译就不通过,但是运行的时候还是看子类,因为子类重写了父类,会运行子类的
作者: dajiaoya    时间: 2015-7-6 12:53
分享快乐,赞一个
作者: Love丶cd    时间: 2015-7-6 15:53
其实只是想说没看懂你问的是什么意思,如果你是想问子类是否能调用父类中的方法,那肯定是必然的,super一下就OK了。
作者: Love丶cd    时间: 2015-7-6 15:54
fantianfei 发表于 2015-7-5 09:08
我感觉应该也是可以的,以后会接触到多层继承吧。

多层继承只出现在接口对接口的继承中。




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