黑马程序员技术交流社区

标题: 子类不是继承了父类的方法吗 那为什么看源码经常看到子类调用父类的方法 [打印本页]

作者: 沙漠里的小鱼    时间: 2013-2-18 20:30
标题: 子类不是继承了父类的方法吗 那为什么看源码经常看到子类调用父类的方法
既然子类已经有了父类的方法了  为什么子类里的方法却用super调用父类的
作者: 李洪因    时间: 2013-2-18 21:23
"super"
1.调用父类的构造方法
子类可以调用由父类声明的构造方法。但是必须在子类的构造方法中使用super关键字来调用。
如果父类的构造方法中包括参数,则参数列表为必选项,用于指定父类构造方法的入口参数。  
2.操作被隐藏的成员变量和被覆盖的成员方法
如果想在子类中操作父类中被隐藏的成员变量和被覆盖的成员方法,也可以使用super关键字.

作者: 胥文    时间: 2013-2-18 22:04
因为在子类和父类之间有重写的概念,如果要在子类中定义一个方法,而该方法和父类有相同的名称和参数,子类可以原封不动的继承父类的方法,
而如果子类想要修改,就必须重写父类的方法
class A
{
        public void show()
        {
                System.out.println("吃饭");
                System.out.println("走路");
                System.out.println("说话");
        }
}
class B extends A
{
        public void show()
        {
                super.show();//此处个人认为是提高了代码的复用性
                System.out.println("学习");
        }
}
你看这样是不是好理解一些
作者: 沙漠里的小鱼    时间: 2013-2-19 00:30
胥文 发表于 2013-2-18 22:04
因为在子类和父类之间有重写的概念,如果要在子类中定义一个方法,而该方法和父类有相同的名称和参数,子类 ...

你没理解我说的意思  你看源代码的时候拿你的例子来举例子
class A
{
        public void show()
        {
                System.out.println("吃饭");
                System.out.println("走路");
                System.out.println("说话");
        }
}
class B extends A
{
        public void show()
        {
                super.show();//此处个人认为是提高了代码的复用性
               //System.out.println("学习");去掉这句话  子类直接调用父类方法
        }
}
就是说子类不加强  直接调用父类方法  你看源码很多这样写的






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