Java中构造函数的继承问题

本文解析了构造函数在继承中的作用,子类如何调用父类的构造函数,以及super关键字的使用。通过具体代码示例,说明了在子类构造函数中调用父类构造函数的必要性和正确方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数不会被继承,只是被子类调用而已

  1. 子类所有的构造函数默认调用父类的无参构造函数。
  2. 子类的某个构造函数想调用父类的其他的带参数的构造函数,第一行人为添加super(val1,val2[,val3…]).
  3. super指代父类对象,可以在子类中使用 super.父类方法名();调用父类中的方法。
class Bee00{
	int id;		//蜜蜂的唯一标识
	int x,y;	//蜜蜂现在所处的位置坐标(最小单位:像素)
	int honey;	//当前蜜蜂采集蜂蜜的数量(单位:mg)
	 //最好加上下面这一行
	// public Bee00(){}
	
    public Bee00(int id,int x,int y)
    {   
		this.id = id;
		this.x = x;
		this.y = y;
		this.honey = 0;
		System.out.println("Bee: "+id+" come from ("+x+","+y+")");
    }

	public void showHoney()
	{
		System.out.println("Bee: "+id+" has ("+honey+"mg) honey ");
	}
	
}
public class Bee01 extends Bee00{
	public Bee01(int id,int x,int y){
		super(id,x,y);
	}
	
	public Bee01(int id){
		//super(id,0,0);
		this.id= id;
	}
	
	public static void main(String[] args)
	{
		Bee00 bee1 = new Bee01(1);
		Bee00 bee2 = new Bee01(2,100,100);
		System.out.println(bee1);
		System.out.println(bee2);
	}
}
D:\JavaLesson\第一次课资料>javac Bee01.java
Bee01.java:26: 错误: 无法将类 Bee00中的构造器 Bee00应用到给定类型;
        public Bee01(int id){
                            ^
  需要: int,int,int
  找到: 没有参数
  原因: 实际参数列表和形式参数列表长度不同
1 个错误

因为父类Bee00没有无参的构造函数,子类如果想有自己的构造函数,必须现在构造函数第一行显式调用super(args);
所以一般会在父类中加上无参的构造函数。这样的话,子类创建自己的构造函数时就可以不用显式调用super(…);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值