java:super

//禁止商业转载,转标处。

//super主要用于子类与父出现同名方法或者变量时用于标记属于父类的变量或者方法,见例子。

//子类创建构造方法的时候系统会自动调用父类构造方法。
        
//**********父类**********

public class Animal {
	int age = 3; // 父类变量

	Animal(){
		System.out.println("父类构造方法执行了");		// 父类构造方法
	}
	void Age() {
		System.out.println("这个动物" + age + "岁了。");			// 父类方法
	}
}

//**************子类***********
class Dog extends Animal {
	int age = 4;
	Dog ( ) {
		                                                    //        super();
	System.out.println("子类构造方法执行了");				//子类构造方法
	}
	void Age() {
		System.out.println("这个小狗" + super.age + "岁了。"); // 关键字super
	}
}


//*************第三类*************

public class run {
	public static void main(String[] args) {
		Dog dog = new Dog();

		dog.Age();
	}
}



//运行结果    :  
    父类构造方法执行了
    子类构造方法执行了
    这个小狗3岁了。


 运行结果证明:

创建子类对象时,

先执行父类构造方法

再执行子类构造方法,执行子类构造方法之前会调用父类构造方法,自动在子类构造方法中加入super( )语句;

再创建子类

再创建对象

再执行方法。

子类对象执行重写方法时调用了父类变量。


### 问题分析 在 Java 模组开发中,若在 `DressArmorItem` 类的构造函数中调用 `super(new Item.Settings())`,而编译器提示“应为无实参,但实际为1个”的错误,说明父类的构造函数不接受参数。这通常是因为未正确继承 `Item` 类的构造方法,或在定义 `DressArmorItem` 时未正确传递构造参数。 根据 Java 的类构造机制,子类构造函数中调用 `super(...)` 时,必须与父类构造函数的参数列表匹配。如果父类没有接受 `Item.Settings` 类型的构造函数,则会导致编译错误。`Item` 类的构造函数签名如下: ```java public Item(Settings settings) ``` 因此,若 `DressArmorItem` 的父类为 `Item`,则构造函数应正确调用该构造方法。 ### 解决方案 确保 `DressArmorItem` 类继承自 `Item`,并正确使用构造函数: ```java package your.package.items; import net.minecraft.item.Item; public class DressArmorItem extends Item { public DressArmorItem() { super(new Item.Settings()); } } ``` 这样可以确保调用父类 `Item` 的构造函数,并传入正确的 `Settings` 实例。如果仍然报错,应检查是否误用了其他类作为父类,例如 `ArmorItem` 或其他不接受 `Settings` 参数的类。 ### 示例代码 #### `DressArmorItem.java` ```java package your.package.items; import net.minecraft.item.Item; public class DressArmorItem extends Item { public DressArmorItem() { super(new Item.Settings()); } } ``` #### 父类构造函数(来自 `Item` 类)[^1] ```java public Item(Settings settings) { this.settings = settings; } ``` 通过上述方式,确保 `DressArmorItem` 的构造函数正确调用父类构造方法,避免参数不匹配的编译错误。 ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值