我应该总是在Java类中使用getter/setter方法,还是有时可以使用公共属性?

Chr*_*ava 1 java methods android attributes class

我已经编写Java大约4个月了.我刚开始用介绍书的指南编写安卓游戏.在本书中,它们没有封装类的任何属性.

防爆.

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

    public GameObject(float angle, Vector position){
...
Run Code Online (Sandbox Code Playgroud)

我总是被告知,对属性的封装是很好的做法:只允许通过getter和setter方法访问私有属性.

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

然后是一个跟进:我应该总是封装一个类的私有属性并提供getter和setter方法,还是有公共属性可以的情况?

npi*_*nti 10

封装是面向对象编程的核心概念之一.在我看来,使用getter和setter总是很好的做法.你应该避免的一件事是让外部实体随意混淆你班级的内部结构.

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

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