关于Java中的构造方法和set方法()给属性赋值

本文探讨了在Java类中将成员变量设置为private类型后,如何通过get和set方法以及构造方法进行属性值的设置。详细介绍了两种设置属性值的方式及其应用场景,帮助开发者更全面地理解面向对象编程中属性访问控制的灵活性。

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

对于一个类中的成员变量(属性),属性如果都设置成了private类型,那么对外给属性设置了get和set方法 ,

那么外部程序中给这些属性设置值,有两种方式.

第一种就是通过set()方法.

第二种就是通过含有这个属性的构造方法来直接设置这个属性的值.

Student.java

 1 public class Student {
 2     private int age;
 3     private String name;
 4     private int id;
 5     
 6     public Student(int age, String name) {
 7         super();
 8         this.age = age;
 9         this.name = name;
10     }
11     public int getAge() {
12         return age;
13     }
14     public void setAge(int age) {
15         this.age = age;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public int getId() {
24         return id;
25     }
26     public void setId(int id) {
27         this.id = id;
28     }
29 }

 一开始我的思维仅仅局限在属性设置通过set()方法上.压根就没有想到还可以通过构造方法.思维的局限.

转载于:https://www.cnblogs.com/DreamDrive/p/4318140.html

### Java 构造器与 getter/setter 方法的区别 在 Java 面向对象编程中,构造器 getter/setter 方法分别承担着不同的职责,它们在类的设计对象的生命周期中扮演着不同的角色。 #### 构造器的作用 构造器是一种特殊的方法,用于在创建对象时初始化对象的状态。构造器的名称必须与类名相同,并且没有返回类型。构造器在使用 `new` 关键字创建对象时自动调用。构造器可以包含参数,以便在创建对象时直接为对象的属性赋值。例如,在 `Order` 类中通过有参构造方法创建对象时,可以直接为订单设置支付金额: ```java Order o2 = new Order(157.689); ``` 构造器的一个重要特点是,它确保了对象在创建时就处于一个合法的状态,避免了对象属性未被初始化的情况[^3]。 #### getter/setter 方法的作用 getter setter 方法是用于访问修改类的私有属性方法。通过将属性设置为私有(`private`),并提供公开的 getter setter 方法,可以实现对数据的封装,从而保护数据的安全性。例如,在 `StudentTest.java` 中,`age` 属性被声明为私有,而通过 `setAge` 方法可以对传入的年龄值进行逻辑校验: ```java public void setAge(int a) { if (a > 0 && a < 120) { age = a; } else { age = 18; System.out.println("年龄无效,默认年龄 18"); } } ``` 通过这种方式,setter 方法不仅可以设置属性值,还可以添加额外的验证逻辑,确保数据的有效性。getter 方法则用于获取属性值,提供对私有属性的受控访问[^1]。 #### 两者的区别 1. **用途不同**: - 构造器用于初始化对象的状态,确保对象在创建时就具有合理的初始值。 - getter setter 方法用于在对象创建后,访问修改对象的属性值。 2. **调用时机不同**: - 构造器在对象创建时自动调用。 - getter setter 方法可以在对象的生命周期中随时调用。 3. **参数传递方式不同**: - 构造器通常在创建对象时传递参数,用于初始化对象的属性。 - getter 方法通常没有参数,只返回属性值;setter 方法通常有一个参数,用于设置属性值。 4. **数据校验能力**: - 构造器虽然可以在初始化时进行数据校验,但通常不如 setter 方法灵活。 - setter 方法可以在设置属性值时进行复杂的逻辑判断,确保数据的有效性。 5. **自动生成工具支持**: - 使用 Lombok 库可以自动生成 getter、setter 方法以及构造器,简化代码编写。例如,通过注解 `@Data` 可以自动生成 getter、setter、`toString` 等方法;通过 `@NoArgsConstructor` `@AllArgsConstructor` 可以自动生成无参有参构造器[^4]。 #### 示例代码 以下是一个简单的 `Point` 类示例,展示了构造器 getter/setter 方法的使用: ```java public class Point { private int x; private int y; // 无参构造器 public Point() { } // 有参构造器 public Point(int x, int y) { this.x = x; this.y = y; } // getter 方法 public int getX() { return x; } public int getY() { return y; } // setter 方法 public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } @Override public String toString() { return "Point(" + x + ", " + y + ")"; } } ``` 在测试类中,可以通过构造器创建对象并使用 getter setter 方法进行测试: ```java public class Test { public static void main(String[] args) { Point po1 = new Point(20, 21); Point po2 = new Point(22, 22); System.out.println(po1); System.out.println(po2); } } ``` #### 总结 构造器 getter/setter 方法Java 中各有其独特的用途。构造器主要用于对象的初始化,而 getter setter 方法则用于对象属性的访问修改。通过合理使用构造器 getter/setter 方法,可以更好地实现面向对象编程中的封装特性,提高代码的安全性可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值