java继承中的构造方法问题
class Person{
private String name;
/*Person(){
System.out.println("调用了Person缺省构造函数");
}*/
Person(String name){
this.name=name;
System.out.println("调用了Person带参构造函数");
}
}
class Student extends Person{
private String school;
Student(){
super("lisi");
System.out.println("调用了Student缺省构造函数");
}
Student(String school){
// super("lisi");
this.school=school;
System.out.println("调用了Student带参构造函数");
}
}
public class TestPerson{
public static void main(String[] args){
Student s1=new Student();
}
}
如上代码编译会通不过,但是将super("lisi")的注释去掉就能通过,求解释。。。
[解决办法]
super是用在和父方法名字一样的情况的,知否啊。你那个 super("lisi") 等于调用了Person类的Student(String s) 的方法,问题是这个方法不存在
你可以吧super("lisi") 改成 Person("lisi"); 或者给给person做个setName的方法。
[解决办法]
学习了
[解决办法]
LZ其实是对的啦,这边的super是调用的父类的构造方法的,而且LZ注释掉的super方法不能注释的呀,必须得写的,不然父类就不能初始化了,我试了一下,加上super是对的,去掉就错了哇~~~
[解决办法]