- class Student extends Person{
- private String name;
- public String getName(){
- return name;
- }
- Student(String name){
- /*
- * 如果注释下面这行,程序报错
- * 原因在于,如果你在父类Person中没写任何构造方法,那么会默认有一个空参的构造方法,
- * 而一旦自己写了带参的构造方法,默认的空参构造方法就没有了,而子类的构造方法默认调用
- * 父类的空参构造,此时父类没有空参构造,所以会报错,因此要么调用父类的有参构造,要么
- * 在父类中再写一个空参构造。
- */
- // super(name);
- /*
- * 注释下面这行,打印为null,null,null
- * 原因在于,父类的name属性是私有的,子类并没有继承该属性,在子类的getName方法中,返回
- * 的是子类的name属性值,而super(name)是给父类的name属性赋值,所以如果没有下面这句,子类
- * 的属性根本没有赋值,必然打印null。所以,要么用下面代码给本类name属性赋值,要么在本类
- * 的getName方法中,返回super.getName(),就可以打印出结果了
- */
- this.name=name;
- }
- }
复制代码
|