为什么需要将类中的属性定义为private类型

博客指出为避免波纹效应,类属性若定义为public类型,属性名改变时所有直接调用代码都要修改;而定义为private类型,别处通过访问接口访问,只要接口不变,其他代码无需变化,可保证属性修改只影响本类代码。

为了避免波纹效应,如果将类中的属性定义为public类型,当属性名称发生改变的时候,所有直接调用该属性的代码都需要进行修改。而将其定义为private类型,则别处访问只能通过该属性的访问接口进行访问,只要接口不变其他代码就不需要变化,保证了对该类中属性的修改只对该类的代码产生影响而不影响其他类。

定义时,使用`private`关键字将中的属性私有化是一种常见的封装方式,可增强数据安全性与可控性。`private`是权限修饰符,用于修饰成员变量和成员方法,被私有化的成员仅在本中有效,同一个的不同对象可互相访问彼此的私有成员[^1]。 以下是使用`private`关键字将属性私有化的方法及示例: 1. **在成员变量前添加`private`关键字**:在定义成员变量时,在变量类型前添加`private`关键字,将该属性私有化,使其无法通过`对象.成员变量`的方式直接访问。 2. **提供`get`和`set`方法**:为了在外部访问和修改私有属性,需要为每个私有属性提供`get`和`set`方法。`get`方法用于获取属性值,`set`方法用于设置属性值。 以下是一个`Person`的示例,展示了如何使用`private`关键字将属性私有化并提供`get`和`set`方法: ```java public class Person { // 使用private关键字将属性私有化 private String name; private int age; private double weight; private String sex; // 成员方法 public void sleep() { System.out.println("休息"); } public void eat() { System.out.println("吃饭"); } // get方法,用于获取属性值 public String getName() { return name; } // set方法,用于设置属性值 public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } ``` 在上述示例中,`name`、`age`、`weight`和`sex`属性被`private`关键字修饰,因此无法在外部直接访问。可以通过`get`和`set`方法来访问和修改这些属性的值。 以下是使用`Person`的示例: ```java public class Main { public static void main(String[] args) { Person person = new Person(); // 使用set方法设置属性值 person.setName("张三"); person.setAge(20); // 使用get方法获取属性值 System.out.println("姓名: " + person.getName()); System.out.println("年龄: " + person.getAge()); } } ``` ### 总结 通过将属性私有化并提供`get`和`set`方法,可以实现对属性的访问控制,确保数据的安全性和一致性。在`set`方法中,可以添加逻辑来验证输入的值是否合法,避免不合理的数据被设置到属性中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑再鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值