我用get和不用get程序能运行,但有什么区别呢?
package book_two.com.demo;
import book_two.com.bean.Rectangle;
public class RectangleDemo {
public static void main(String[] agrs)
{
Rectangle rect=new Rectangle();
//rect.length=12.36; //不允许外部调用的
//rect.width=11.36;
//System.out.println("长方形的面积是:"+rect.area());
rect.setWidth(12.36);
rect.setLength(16.56); //调用私有方法
rect.display();
}
}
package book_two.com.bean;
public class Rectangle {
private double length;
private double width;
//public double length;
//public double width;
public void setWidth(double w)
{
width=w;
}
/*public double getWidth()
{
return width;
}*/
public void setLength(double l)
{
length=l;
}
/*public double getLength()
{
return length;
}*/
double area()
{
return length*width;
}
public void display()
{
System.out.println("长:"+length+"\t宽:"+width);
System.out.println("长方形的面积是:"+area());
}
}
------解决方案--------------------
这就是封装
使用set方法给属性赋值,这样你的传入数据就可以在这个set方法里进行验证和校验(当然大部分时候我们看到的都是直接赋值的),好处在于对字段封装
隐藏的部分(private)是对类中不应该公开给你的部分。
举个例子:
你通过ATM往银行存钱的时候,你是需要通过atm机的一些操作来验钞、数钞票的。如果没有这些,你直接往里面输入个10万,结果你没有真的存了这么多钱他就没法控制了。