带参构造方法

在Java编程中,遇到一个关于带参构造方法的问题,即通过构造方法传递的参数值未正确赋给成员属性。原因是参数名与属性名相同导致参数值实际上赋给了自身。解决方案有两种:一是修改构造方法参数名以避免冲突;二是使用`this`关键字明确指定赋值给成员属性。使用`this`关键字能简化代码并清晰地表示赋值意图。

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

package cn.hpu.animal;

public class CatTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//对象实例化
		Cat one=new Cat("花花",3,"中华田园猫");
		Cat two=new Cat();
		
		//测试
//		one.eat();
//		one.run();
//		one.name="花花";
//		one.month=2;
//		one.weight=2.5;
//		two.name="帆帆";
//		two.month=5;
//		two.weight=3;
		System.out.println("昵称"+one.name);
		System.out.println("年龄"+one.month);
		System.out.println("体重"+one.weight);
//		System.out.println("昵称"+two.name);
//		System.out.println("年龄"+two.month);
//		System.out.println("体重"+two.weight);
//		


	}

}
package cn.hpu.animal;
/**
 * 宠物猫类
 * @author Hongliang Wang
 *
 */
public class Cat {

	//成员属性:年龄,昵称,体重,品种
	//注意成员变量的位置:在cat类内,在方法以外。
	String name;//String 默认值为null
	int month;  //int默认值为0
	double weight;//double默认值为0.0,这些是系统给成员属性赋的初值
	String species;
	
	public Cat() {
		System.out.println("无参构造方法被调用");
	}
	public Cat(String name) {
		System.out.println("有参数被调用
在 Java 中,**构造方法(Parameterized Constructor)** 是指在类中定义的一个构造方法,并且该构造方法接受一个或多个数。它用于在创建对象时**为对象的属性赋初始值**,从而避免了后续再通过 setter 方法逐一设置属性。 --- ### 1. 构造方法的作用: - 在实例化对象时直接初始化对象的状态(成员变量) - 提高代码的可读性和封装性 - 避免对象处于“未初始化”状态 --- ### 2. 示例代码: ```java class Person { private String name; private int age; // 无构造方法 public Person() { this.name = "Unknown"; this.age = 0; } // 构造方法 public Person(String name, int age) { this.name = name; this.age = age; } public void display() { System.out.println("Name: " + name + ", Age: " + age); } } public class Main { public static void main(String[] args) { Person p1 = new Person(); // 使用无构造方法 Person p2 = new Person("Alice", 25); // 使用构造方法 p1.display(); // 输出 Name: Unknown, Age: 0 p2.display(); // 输出 Name: Alice, Age: 25 } } ``` --- ### 3. 注意事项: - 如果你没有手动定义任何构造方法,Java 会提供一个默认的无构造方法。 - 一旦你定义了任意一个构造方法(包括的),Java 就不再自动生成无构造方法。 - 构造方法可以重载,即一个类可以有多个构造方法,只要它们的数列表不同。 --- ### 4. 应用场景: - 创建实体类(如 User、Student 等)时初始化字段 - 实现 Builder 模式或工厂模式中的初始化逻辑 - 在依赖注入等设计中传递必要的数 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值