Effective Java 类和接口 14.在公有类中使用访问方法而非公有域

来源:互联网 发布:淘宝直播如何开通 编辑:程序博客网 时间:2024/06/05 15:46

一位学习C语言(那种C语言不太清楚)的同事问我,为什么类.属性可以解决的事情,为什么要get与set方法,当时我懵了。如下:

class Point{        public double x;    public double y;}

调用:

Point p=new Point();    p.x=10;    p.y=20;    double x=p.x;    double y=p.y;

上述的方法没毛病啊,那我还用什么get,set。但是这完全不符合java的面向对象的特性,没有提供封装(encapsulation)功能。这也是java语言跟c语言(那种C语言不太清楚)的区别。

上面的类应改由私有域(私有的属性)和共有的访问方法(getter)的类来代替,对于可变的类,用包含私有域和共有设值方法(setter)的类代替。

class Point{    private double x;    private double y;    public Point(double x,double y){        this.x=x;        this.y=y;    }    public double getX(){return x;}    public double getY(return y;)    public void setX(double x){this.x=x;}    public void setY(double y){this.y=y;}}

总之,公有类永远都不应该暴露可变的域。

阅读全文
1 0
原创粉丝点击