Java 当getter和setter用于Android项目中的私有变量时 问题

Java 当getter和setter用于Android项目中的私有变量时 问题,java,android,oop,Java,Android,Oop,在一个Android项目中,我在一个公共类中有一些私有变量,警告消息不断提醒我实现getter和setter,而不是直接给这些私有变量赋值 问题: 什么时候应该为私有变量实现getter/setter 源代码 MainActivity.java public类MainActivity扩展了活动实现到TouchListener上{ //我在这个类MainActivity的以下方法中使用了一些私有变量 私有布尔值_isMenuHidden=true; 私有布尔值_isMenuMoveTriggere

在一个Android项目中,我在一个公共类中有一些私有变量,警告消息不断提醒我实现getter和setter,而不是直接给这些私有变量赋值

问题: 什么时候应该为私有变量实现getter/setter

源代码
MainActivity.java

public类MainActivity扩展了活动实现到TouchListener上{
//我在这个类MainActivity的以下方法中使用了一些私有变量
私有布尔值_isMenuHidden=true;
私有布尔值_isMenuMoveTriggered=false;
私有整数xDelta=0;
私有整数_yDelta=0;
private intxtouchdown=0;
私有int_yTouchDown=0;
private intxprevious=0;
private int _ypevious=0;
//有些代码省略了。。。。
//实现View.OnTouchListener
@凌驾
公共布尔onTouch(视图、运动事件){
final int X=(int)event.getRawX();
final int Y=(int)event.getRawY();
view=(view)view.getParent();
LinearLayout.LayoutParams mLayoutParams=(LinearLayout.LayoutParams)view.getLayoutParams();
开关(event.getActionMasked()){
case MotionEvent.ACTION\u DOWN:
_xTouchDown=X;
_yTouchDown=Y;
_xPrevious=X;
_yPrevious=Y;
_xDelta=X-mLayoutParams.leftMargin;
返回false;
//case MotionEvent.ACTION\u DOWN:
//中断;
case MotionEvent.ACTION\u移动:
如果((X-xDelta)<-384)| |((X-xDelta)>0)){
//移动最多允许480*80%=384像素向左和向右移动
//向右零像素
}否则{
//有些代码省略了。。。。
}
打破
//有些代码省略了。。。。
}//开关()
}//公共布尔onTouch()的结尾
//有些代码省略了。。。。
}//公共类main活动结束

谢谢:当您需要控制对类的私有成员变量的访问和修改时,应该为类的私有成员变量实现Dgetter和setter。例如,如果您有一个邮政编码专用字段,则希望将其设置为专用字段,并编写一个setter,该setter接受字符串、验证字符串,并且仅在邮政编码合法且适当时设置成员值


这样做有助于防止垃圾数据在实例中成为问题,并确保类的安全性。

当需要控制类的私有成员变量的访问和修改时,应为其实现getter和setter。例如,如果您有一个邮政编码专用字段,则希望将其设置为专用字段,并编写一个setter,该setter接受字符串、验证字符串,并且仅在邮政编码合法且适当时设置成员值


这样做有助于防止垃圾数据在实例中成为问题,并确保类的安全。

当您希望允许类访问类的私有数据时,创建公共getter和setter

如果只允许继承类访问私有数据,请创建受保护的getter和setter

您不需要创建getter和setter来访问来自同一类的私有数据,但许多人认为,随着需求的变化,它会创建将来更易于维护的代码


使用getter和setter的另一个原因是数据的形式或使用可能会发生变化,例如,您可能有私有数据来存储生日,但创建一个名为getAge()的getter。

当您希望允许类访问您的类私有数据时,创建公共getter和setter

如果只允许继承类访问私有数据,请创建受保护的getter和setter

您不需要创建getter和setter来访问来自同一类的私有数据,但许多人认为,随着需求的变化,它会创建将来更易于维护的代码


使用getter和setter的另一个原因是数据的形式或使用可能会发生变化,例如,您可能有私有数据来存储生日,但创建一个名为getAge()的getter。

getter和setter用于访问类的私有属性。 是一个OOP概念,规定了以下内容: -属性必须是私有的(或受保护的) -setter和getter的存在,允许从类外部访问这些私有属性


setter确保类的状态(属性值)的一致性。

getter和setter用于访问类的私有属性。 是一个OOP概念,规定了以下内容: -属性必须是私有的(或受保护的) -setter和getter的存在,允许从类外部访问这些私有属性


setter确保类状态(属性值)的一致性。

setter不是OO。您应该定义更新内部状态的
操作,而不是公开内部状态。例如
moveTo(x,y)
not
setX(x);setY(y)
。它们旨在提供一种从gui编辑器更新属性的简单方法,而不是像它们现在的一般做法一样。@BevynQ,要点如下,谢谢:DSetter不是OO。您应该定义更新内部状态的
操作,而不是公开内部状态。例如
moveTo(x,y)
not
setX(x);setY(y)
。它们旨在提供一种从gui编辑器更新属性的简单方法,而不是像它们现在的一般做法一样。@BevynQ,要点,谢谢:D