java - 我应该始终在 Java 类中使用 getter/setter 方法,还是有时可以使用公共(public)属性?

标签 java android class methods attributes

<分区>

我已经编写 Java 代码大约 4 个月了。我刚开始使用介绍书的指南编写 Android 游戏。在书中,它们不封装类的任何属性。

例如

public class GameObject{
    public Vector position;
    public float angle;

    public GameObject(float angle, Vector position){
...

我总是被告知属性封装是一种很好的做法:只允许通过 getter 和 setter 方法访问私有(private)属性。

任何比我更有经验的程序员能告诉我哪种方式是创建属性的“正确”编码方式吗?当然还有为什么?

然后跟进:我应该始终封装类的私有(private)属性并提供 getter 和 setter 方法,还是在某些情况下可以使用公共(public)属性?

最佳答案

封装是面向对象编程的核心概念之一。在我看来,使用 getter 和 setter 始终是一种很好的做法。您应该避免的一件事是让外部实体随意扰乱类的内部结构。

典型的例子,考虑有一个 dateOfBirth 参数。使用 settergetter,您可以进行一个小的验证过程,确保用户不是在未来出生,或者不可能是老的。您还可以使用 setter 来更新一些其他字段,例如年龄。

这种次要验证还可以增强代码的可重用性,因为您不必在调用这些 getter 和 setter 的任何其他类中进行这种检查。

关于java - 我应该始终在 Java 类中使用 getter/setter 方法,还是有时可以使用公共(public)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18140863/

相关文章:

java - Hibernate 在创建时设置交叉引用

java - 将当前 Activity 传递给服务,以便该服务可以操作 View

android - 如何将 .o 文件添加到 Android ndk 构建

typescript 泛型类作为函数参数

java - REST:@autowired heavenService 上的 java.lang.NullPointerException

java - Android使用GDK使用MultipartEntity上传图片

android - 撤销个人权限后更新 session

java - Android 应用程序仅在低 Android API 上在 OnCreate 的 setContentView 处崩溃

python - 创建一组 Python 类

Python - 如果在类中使用了未声明的变量,则强制出错