没看懂为什么要用这两个方法,先记着吧。
在知乎上别人贴上的两个地址,留着以后写的多了,见识的多了,再次回头看这些的时候作为参考吧
https://stackoverflow.com/questions/1568091/why-use-getters-and-setters-accessorshttps://pragprog.com/articles/tell-dont-ask 别的博客下面评论看到的,貌似很有道理:
{
写在前面:set 或者 get ,有一定的用处,但实际使用时,还是要根据上下文,根据模块,来决定数据的修改和获取,不应当过于依赖set或get。
1.set:在OO当中,变量最好都是private,防止被误操作,那么如何修改private的变量呢? 写一个函数,专门针对private变量,每当想要修改这个变量的时候,就调用这个set函数。
2.get:既然这个变量是private,那么外部无法获取这个变量的值了,所以,再写一个函数,专门用于返回这个变量的值,然后在类的外部,就可以随意得到这个private的变量的值。
}
在其他类继承这些私有数据的时候,更新时可以加一些判断条件:
class Persion
{
private String name;
private String idStr;
public Persion(){}
//注意构造方法不需要加返回类型
public Persion(String name, String idStr)
{
this.name = name;
this.idStr = idStr;
}
//setter和getter方法 注意返回类型
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setIdStr(String idStr)
{
idStr = idStr;
}
public String getIdStr()
{
return idStr;
}
//重写equals方法,提供自定义的相等标准
public boolean equals(Object obj)
{
//只有当obj是persion对象
if(obj != null && obj instanceof Persion)
{
Persion persionObj = (Persion)obj;
//并且当前对象的IdStr与obj对象的IdStr相等才可判断两者相等
if (this.getIdStr().equals(persionObj.getIdStr()))
{
return true;
}
}
return false;
}
}
public class OverideEqualsRight
{
public static void main(String[] args)
{
Persion p1 = new Persion("孙悟空", "123456");
Persion p2 = new Persion("孙行者", "123456");
Persion p3 = new Persion("孙悟饭", "1234");
//p1和p2的IdStr相等所以输出true
System.out.println("p1是否等于p2:" + p1.equals(p2));
//p1和p3的idStr不相等所以输出false
System.out.println("p1是否等于p3:" + p1.equals(p3));
}
}
菜鸟一枚,继续学习