黑马程序员技术交流社区
标题:
构造函数
[打印本页]
作者:
山水游客
时间:
2012-6-16 16:47
标题:
构造函数
本帖最后由 孙胜录 于 2012-6-18 23:10 编辑
class Person
{
private String name;
// Person(){ //注释掉,子类就会报错
//
// }
public Person(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
class Student extends Person
{
String name;
Student(String name){ // 要我必须
this.name = name ;
}
}
注释掉了person()后,子类就必须调用super,而在父类中显示定义了Person()以后,子类就可以随便定义构造函数了··。
子类自己定义自己的构造函数咋就不可以呢。为什么非要调用父类的super()呢??
作者:
李盼
时间:
2012-6-16 16:55
子类在调用构造方法的时候,必定要先调用父类的构造方法,在其内部建立一个父类对象,,这样就拥有了父类的方法和属性,要不然怎么继承父类的这些方法的属性呢?
作者:
黑马---邢志伟
时间:
2012-6-16 17:06
首先子类是不可以自己定义构造函数的。。。必须调用父类才可以的。。。注释掉了person()后,子类就无法调用了、、、但是可以通过super关键字调用其父类的构造函数。。。这样子类才可以自己定义构造函数。。。子类是继承了父类的所有特性的。。。这是我自己的理解。。。希望你能够明白。。。
作者:
龙秋地
时间:
2012-6-16 17:34
首先任何类都有构造方法,java怕你忘写,也会默认你有一个有无参构造方法。
所以你的Person里面就会有一个叫Person()的构造方法。
当你注释掉Person(),而且你又重写了一个带参数的构造方法,
那么你写super(),里面没有参数是无法调用父类构造方法的,
还有就是因为你的Student是子类 既然是继承了Person(),那么就应该拥有
Person的一切非私有属性,所以就必须super()调用父类构造方法,重新创造一个既带有父类成员,
又带有子类成员的对象.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2