java:用子类构造器构造父类 其方法,属性是谁的?

Python08

java:用子类构造器构造父类 其方法,属性是谁的?,第1张

a的方法用的是子类继承或重写的方法。

属性是父类的属性。

这是多态的范畴。也常用于接口回调等。

注意不要调用子类的新方法。

当父类是抽象类时,就可用这种构造方式得到能使用指定方法的对象。

如:Map

mp

=

new

HashMap()

一,java子类不能继承父类的构造方法(可以调用,但不是继承):

1、构造方法的定义是与类的名称相同:如果子类能够继承父类的构造方法,那么在子类的构造方法中就有不同于子类名称的构造法;

2、这与构造方法的定义不符,因此子类是不能继承父类的构造方法的;

3、以上参考资料来源:http://bbs.csdn.net/topics/360118234

二,子类继承父类时,需要注意以下三点:

1、在子类继承父类的时候,子类必须调用父类的构造函数

2、在父类有默认构造函数,子类实例化时自动调用,在父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数;

3、在java的继承当中子类是不可以继承父类的构造函数,只能调用父类的构造函数。

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

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)

}

}