继承的构造方法

本文介绍在面向对象编程中,子类如何通过构造方法调用父类构造方法的过程。主要包括子类构造方法中调用父类构造方法的规则、使用super关键字的注意事项及实例演示。

1.子类的构造过程中必须调用父类的构造方法

2.子类可以在自己的构造方法通过super(argument list)来调用父类的构造方法

         (1)使用this(argument list)来调用本类另外的构造方法

          (2)如果调用super,必须写在子类构造方法的第一行。

3.如果子类的构造方法中没有显示的调用父类构造方法,则系统默认调用父类

        无参数的构造方法。

4.如果子类的构造方法中没有显示的调用父类构造方法,,而父类中又没有无

        参数的构造方法,则编译出错。

示例代码:

class Superclass{
	private int n;
	Superclass(){     //无参的构造方法 
		System.out.println("Superclass()");
	}
	Superclass(int n){   //有参数的构造方法
		System.out.println("Superclass("+n+")");
		this.n=n;
	}
}

//子类Subclass继承父类Superclass
class Subclass extends Superclass{
	private int n;
	Subclass(){
		System.out.println("Subclass("+n+")");
	}
	Subclass(int n){
		super(300);   
		System.out.println("Subclass()");
	}
}
public class Example01 {
	public static void main(String[] args){
		Subclass an=new Subclass();
		Subclass anb=new Subclass(400);
	}
}
第一步:把第25行先注释掉,编译运行,Subclass类new的对象anb调用有参数的构造方法Subclass(int n),通过使用    super(300)调用父类中的有参构造方法,可以看到是先输出Superclass(300).

Superclass(300)
Subclass()
              此时若把父类中有参构造方法注释掉,则子类中无法调用父类构造方法,编译出错。
              此时若把super(300)放到 System.out.println("Subclass()");下面,即super没有写在子类构造方法的第一   行,编译同样会出错。


第二步:把第26行先注释掉,编译运行,Subclass类new的对象an调用无参数的构造方法Subclass,此时虽然没有通过super调用父类构造方法,但系统默认调用父类无参数的构造方法。

Superclass()
Subclass(0)
              此时若把父类中无参构造方法注释掉,则子类中无法调用父类构造方法,编译出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值