我用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());
}
}

解决方案 »

  1.   

    private double length;
    private double width;
    不写public的get方法在外部获取不到length和width的值
      

  2.   

    这就是封装
    使用set方法给属性赋值,这样你的传入数据就可以在这个set方法里进行验证和校验(当然大部分时候我们看到的都是直接赋值的),好处在于对字段封装
    隐藏的部分(private)是对类中不应该公开给你的部分。
    举个例子:
    你通过ATM往银行存钱的时候,你是需要通过atm机的一些操作来验钞、数钞票的。如果没有这些,你直接往里面输入个10万,结果你没有真的存了这么多钱他就没法控制了。
      

  3.   

    使用方法可以保护私有属性。比如你这里,如果我要求长方形的length必须比width大,可以在两个set方法中进行限制,而如果直接把属性暴露出去,就无法达到这种目的。