构造函数注意事项

当实现类之间继承的时候,子类继承父类的所有变量和方法,但子类不继承父类的构造函数,但子类可以调用父类的构造函数,用super。如果给父类定义了有参数的构造函数,则子类必须声明子类的构造函数,如果不声明就会出错的(一句话:若父类声明了自己的构造函数,而子类不声明构造函数,就会出错。因为子类会默认生成无参构造函数,无参构造函数会调用父类的无参构造函数,但是父类没有默认的无参构造函数,就会出错啦)。所以一般情况下为避免此种情况的发生,有两种方法:
1.把父类系统默认的那个无参构造函数也声明出来。
2.在子类中声明构造函数,并用super方法调用父类的构造函数。
也就是

如:public class Person{
    
     public String name;
     public int age;
     public Person(){                           //加上
     }
     public Person(String name,int age){       //定义了自己的有参数的构造函数(java可以有多个构造函数)
           this.name=name;
           this.age=age;
     }
     public void getInf(){
     System.out.println("My name is zhangsan!");
  }
}

public class Student extends Person{
   public String school;
   public Student(){  //你如果不写此构造函数的话,此构造函数是系统默认生成的,他会自动调用父类Person的默认无参构造函数,但此时
    }                  //父类的默认无参构造函数不存在(若写自己的构造函数,则默认的构造函数就不存在了),则会报错,所以此时应该手                        //动的将无参构造函数也加上去(如上)。或者用super调用,如:最下面一段代码:
}

 

 

如:public Student(){
     super("zhangsan",20);
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值