黑马程序员技术交流社区

标题: 为什么子类中所继承父类时的两个super后面不一样,一个带(),一个带点? [打印本页]

作者: xuzhen5014    时间: 2012-11-10 17:03
标题: 为什么子类中所继承父类时的两个super后面不一样,一个带(),一个带点?
class Person
{
       private String name;
       Person(String name)
       {
             this.name = name;
            
       }
      
       void show (){}
      
}

class Student extends class Person
{
       Student(String name)
       {
            super(name);
       }
       void method
       {
            super.show();
       }
}


help......help......help......,感谢!!!:loveliness:
作者: 刘丽娜    时间: 2012-11-10 17:06
第一个是调用父类的构造方法 ,第二个是调用父类的普通方法 show()方法
作者: 刘菲    时间: 2012-11-10 19:55
带()的那个是在调用父类中的构造函数,并往里传参数。
带点的那个是在调用父类中的方法
作者: 李桐    时间: 2012-11-10 20:37
同感,第一个是调用父类构造方法,第二个调用父类的普通方法
作者: 朝花夕拾    时间: 2012-11-10 20:43
super(name);是在调用父类有形参的构造方法, super.show();是在调用父类的show方法
作者: xuzhen5014    时间: 2012-11-10 22:19
感谢大家的help ,知道了{:soso_e176:}
作者: 杜正冬    时间: 2012-11-11 10:19
show();方法是父类定义的普通方法
作者: 滔哥    时间: 2012-11-11 12:06
支持下
作者: 王阳    时间: 2012-11-11 16:48
super(name)是调用父类的构造函数,super.show()是调用父类的show方法。
调用父类的构造函数时,必须要用super()或者super(... args)的方式,因为构造函数和方法及成员变量不一样,所以不能用super.show的方法取调用。而至于super.show是因为show方法属于父类的成员,所以可以用父类对象句柄super.show指向show方法,这里因为show方法不是private,所以其实可以直接调用父类show方法的。不用加super
作者: 张综    时间: 2012-11-11 20:38
在继承中如果要调用父类的构造方法可以用super关键字,而子类在构造的过程中必须调用父类的构造方法,在继承中如果调用父类的方法可以使用super关键字,所以第二个是调用父类的方法show();
作者: 李长波    时间: 2012-11-11 22:38
哥哥!调用父类的一般方法用点,而调用父类的构造方法用super啊!看视频啊!




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