java的抽象类中父类一定要含无参构造函数吗

2024-11-25 04:26:09
推荐回答(2个)
回答1:

  不一定,但是一定要有一个构造函数,有参无参都可以。构造函数是对象的基本,没有构造函数就没有对象。若果在父类中中显示的写了有参数的构造函数,在子类继承就必须写一个构造函数来调用父类的构造函数

  例子:

abstract class Person {   //定义一个抽象类,必须被继承
  
    Person(int i) {
      
   }
 }
 public class Student extends Person {
   
    Student() {
     super(int i)://必须显示的调用父类构造方法//super代表父类对象
  }

  
}

  如果父类中有没有参数的构造函数,在子类中可以不显示的写父类的构造函数,Java会自动调用没有参数的构造函数

  例子:

abstract class Person {   //定义一个抽象类,必须被继承
  
    Person() { //此构造函数也可以不写,Java会默认添加一个没有参数的构造函数
      
   }
 }
 public class Student extends Person {
   
    Student() {
     //super();//可以不写,Java会自己调用这个super()方法
  }
 }

回答2:

不一定,但是一定要有一个构造函数,有参无参都可以
构造函数是对象的基本,没有构造函数就没有对象。
若果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承就必须写一个构造函数来调用父类的构造函数
例子:
abstract class Person { //定义一个抽象类,必须被继承

Person(int i) {

}
}

public class Student extends Person {

Student() {
super(int i)://必须显示的调用父类构造方法//super代表父类对象
}
}

如果父类中有没有参数的构造函数,在子类中可以不显示的写父类的构造函数,Java会自动调用没有参数的构造函数
例子:
abstract class Person { //定义一个抽象类,必须被继承

Person() { //此构造函数也可以不写,Java会默认添加一个没有参数的构造函数

}
}

public class Student extends Person {

Student() {
//super();//可以不写,Java会自己调用这个super()方法
}
}