java - 类的 getters() 和 setters() 简化

标签 java encapsulation setter getter

<分区>

  • 为什么我们确实需要在使用私有(private)属性的类中使用 set 和 get 方法?
  • 什么时候真正在我们的程序过程中用到?
  • 如果没有它,我们还能让它工作吗(不将私有(private)属性更改为公共(public)属性)?

这是我们使用 set 和 get 方法时的源代码示例:

public class Dog {

    private String dogName;
    private int dogAge;

    public Dog(String dogName, int dogAge) {
        this.dogName = dogName;
        this.dogAge = dogAge;
    }

    public String getDogName() {
        return dogName;
    }

    public void setDogName(String dogName) {
        this.dogName = dogName;
    }

    public int getDogAge() {
        return dogAge;
    }

    public void setDogAge(int dogAge) {
        this.dogAge = dogAge;
    }

    @Override
    public String toString() {
        return "Dog{" + "dogName=" + dogName + ", dogAge=" + dogAge + '}';
    }

}

最佳答案

Why do we exactly need to use the set and get methods in our class that use private attributes?

如果你想隐藏实现的细节(encapsulation - a fundamental principle of object-oriented programming),你不想让外面的人访问它们,你只提供一个返回一些值的方法,但你不想透露实现。

另外有时当你设置一个值时,你需要改变其他可能相关的变量,或者改变一些逻辑,这并不总是一个简单的赋值语句。

When it is really used during our program process?

这个问题很难回答,这真的取决于程序。当您想要.. 获取或设置一个值时,您可以使用 settersgetters

Can we still make it work without it?

当然,当你有 public 字段而不是 private 时,它有效,在设计意义上,建议从 开始始终 >private 变量,并且仅在您必须 时更改它们。

关于java - 类的 getters() 和 setters() 简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28342472/

相关文章:

java - 适合有抱负的 Java 技术架构师的好网站

objective-c - @private - 使用与否?

javascript - 在函数中使用 let 而不是 var 的优点

domain-driven-design - DDD 和 Getter 和 Setter 的使用

java - 为什么 @Required 是为 setter 而不是 fields 设置的?

java - 无法在 WebDriver 中的框架之间切换

java - JWebBrowser如何动态导航

Asp.Net:从类返回读者

c++ - 哪个更合适 : getters and setters or functions?

java - JAXB 问题 -- 类......在此上下文中,其任何父类(super class)均未知