1、子类无条件的继承父类的无参构造方法。
2、子类自身没有定义构造方法,继承父类的无参构造方法,作为构造方法;子类自身定义了无参构造方法。
3、对于父类的含参构造方法,子类可以在自己的构造方法的第一行使用关键字super来调用。
代码如下:
//Fighter.java
class Airplane{
private int speed
public Airplane(int s) {
speed=s
System.out.println
}
}
class Warplane extends Airplane{
public Warplane() {
super(600)
System.out.println
}
public Warplane(int s) {
super(s)
System.out.println
}
}
public class Fighter extends Warplane{
public Fighter(){
super()
System.out.println)
}
public Fighter(int s){
super(s)
System.out.println
}
public static void main(String[] args) {
System.out.println
Fighter f1=new Fighter()
System.out.println
Fighter f2=new Fighter(500)
}
}
首先,你这句话没有说清楚构造函数(一般我们讲的“函数”就是“方法”)是默认的无参数,还是自己手动写的有参数的。
一个类可以定义多个 构造函数,如果在定义类时你手动写了一个有参数的构造函数,那么当前类只有这一个有参数的构造函数。如果在定义类时没有定义构造函数,则 编译系统会自动插入一个无参数的默认构造函数,这个构造函数不执行任何代码,且不会显示出来。
Java中,子类只能继承父类的用protected 和 public修饰的构造函数。其中,无参构造函数只能是 public。另外:对super的调用必须是构造器中的第一个语句
是的,继承是子类会继承父类的属性和方法,构造方法也是属于方法,所以会继承构造方法,例如:public class concept {
public static void main(String[] args){
Chicken c=new Chicken("小白")
c.desc()
System.out.println("**********************")
HomeChicken hc=new HomeChicken()
hc.desc()
System.out.println("**********************")
//创建对象其实就是调用构造方法
Pheasant p=new Pheasant("小花")
p.desc()
}
}
//父类(超类)
class Chicken{
String name
//若父类没有默认方法,则加入参数
public Chicken(String name){
System.out.println("Chicken"+name)
}
public void desc(){
System.out.println("我是一只鸡")
}
}
//子类
class HomeChicken extends Chicken{
public HomeChicken(){
super("小白")
System.out.println("HomeChicken")
}
}
//子类野鸡类
class Pheasant extends Chicken{
public Pheasant(String name){
super(name)
this.name =name
System.out.println("Pheasant")
}
}
在这里,
public class concept {
public static void main(String[] args){
Chicken c=new Chicken("小白")
c.desc()
System.out.println("**********************")
HomeChicken hc=new HomeChicken()
hc.desc()
System.out.println("**********************")
//创建对象其实就是调用构造方法
Pheasant p=new Pheasant("小花")
p.desc()
}
}
//父类(超类)
class Chicken{
String name
//若父类没有默认方法,则加入参数
public Chicken(String name){
System.out.println("Chicken"+name)
}
public void desc(){
System.out.println("我是一只鸡")
}
}
//子类
class HomeChicken extends Chicken{
public HomeChicken(){
super("小白")
System.out.println("HomeChicken")
}
}
//子类野鸡类
class Pheasant extends Chicken{
public Pheasant(String name){
super(name)
this.name =name
System.out.println("Pheasant")
}
}
在这里HomeChicken 继承父类Chicken,在子类HomeChicken中,也继承了父类的Chicken()方法