[JAVA基础篇]JAVA中父类构造方法与子类构造方法的联系与用法

来源:互联网 发布:希捷硬盘mac不认 编辑:程序博客网 时间:2024/05/17 01:01

在自己学完JAVA的大部分理论知识后,做了一个小练习。 在练习开始阶段,对父类与子类的构造方法之间的联系和用法理解不是很清晰透彻,也遇到一些麻烦。 在这里总结出来:

1, 父类没有特殊构造构造方法(系统会自动生成一个构造方法),子类想创建一个自己的构造方法。

public abstract class Auto {   ...} //父类public class Truck extends Auto {   public Auto() {   ...   }} //子类

      诸如此类, 在子类构造方法中,不管是有参还是无参,则可以直接写。


2, 父类有自定义的有参的构造方法,子类则不能重载父类的有参构造方法。 原因是在创建子类的对象时,系统会先调用父类的构造方法。如果父类和子类都有各自的构造方法且不一致,那么系统就会报错。 例如:

public abstract class Auto {  public Auto(String name, float price) { //父类的构造方法
  this.name = name;
  this.price = price;
  }} //父类public class Truck extends Auto {    public Auto(String name, float price, String type) { <pre name="code" class="java">   //子类重载父类的构造方法,多加了一个参数
... }} //子类


3, 父类有自定义的有参构造方法,子类在调用父类的构造方法时,则需要显性的调用父类的构造方法且参数需与父类的构造方法的参数一致,需要用super()来实现且super()必须在构造方法的第一行。例如:

public abstract class Auto {  public Auto(String name, float price) { //父类的构造方法
  this.name = name;
  this.price = price;
  }} //父类public class Truck extends Auto {    public Auto(String name, float price) { <pre name="code" class="java">   //子类显性调用父类的构造方法
super(name, price);

   }
} //子类


0 0