【Java基础】setter与getter方法

没看懂为什么要用这两个方法,先记着吧。
在知乎上别人贴上的两个地址,留着以后写的多了,见识的多了,再次回头看这些的时候作为参考吧
https://stackoverflow.com/questions/1568091/why-use-getters-and-setters-accessors
https://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));
		}
	}

菜鸟一枚,继续学习

你可能感兴趣的:(【Java基础】)