java中一个子类是否可以继承父类的构造方法

Python08

java中一个子类是否可以继承父类的构造方法,第1张

子类可以继承父类的构造方法,并遵循以下原则:

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()方法