gpt4 book ai didi

java - 封装 - 在同一个类中使用 setter/getter ?

转载 作者:行者123 更新时间:2023-12-01 21:58:44 25 4
gpt4 key购买 nike

假设我有这个简化的类:

public class Employee {
private final String name;
private int age;
private int salary;


public Employee(String name, int age, int salary) {
name = name;
age = age;
salary = salary;
}

public Employee(Employee copyEmployee) {
name = copyEmployee.name;
age = copyEmployee.age;
salary = copyEmployee.salary;
}

public void riseSalary() {
if(age > 40) {
salary += 500;
}
}

public int getAge() {
return age;
}

public String getName() {
return name;
}

public int getSalary() {
return salary;
}

private void setSalary(int salary) {
salary = salary;
}
}

我将我的字段声明为私有(private)字段。并且通过 getName()、getAge() 和 getSalary() 向外部提供对其值的访问。

正确的封装是否要求我也只能从类方法中访问这些字段?

例如

public void riseSalara() {
if(getAge() > 40) {
setSalary(getSalary()+500);
}
}

或者在我的复制构造函数中使用它们,因为它是相同的类类型,所以我可以访问私有(private)字段?

我必须为作业编写一个类,其中一部分是“使用封装”。然而,类字段只需要由同一对象或同一类的不同对象访问。封装应该走多远?

最佳答案

封装就是把一个东西装进一个胶囊里,从外面看起来干净整洁。您在内部所做的事情是您的选择。

在某种程度上,我们的目标是让通过漂亮的界面编写有史以来最丑陋的代码成为可能。您可以每天更改该类中的代码,但不能更改接口(interface),因为它需要隐藏“实现细节”。

有时使用内部 getter 和 setter 是有意义的,特别是如果这可以减少代码重复,例如当 setter 中需要执行规则时。将 setter 和 getter 视为您可以使用的方法。它们不是强制性的(在我看来,“正确的”面向对象始终是意见问题。)

关于java - 封装 - 在同一个类中使用 setter/getter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com