EffectiveJava笔记[四]

2019-07-23  本文已影响0人  pigrange

【序】今天睡懒觉了,差点咕咕咕。(手动换行) 昨天试图分享自己的笔记,结果被吐槽只是抄书。这句话的对做为尝试写总结性质读书笔记的新手(我)的打击性其实是很大的。花了近3小时写的文章(姑且算是),结果被别人看了一眼就说你这就是抄书,没有技术含量,也不算是原创。


16、在公共类中使用访问方法而不是公共属性

关键字:public类访问方法public属性

JAVA里面,对于那些需要对外提供某些属性的类。比较建议的一种写法是对外提供访问方法(gettersetter)而不直接将这些属性设置为public的。曾经有人问过我这个问题,为什么要这么做,我并不知道,只觉得这是封装思想的一种体现。

如下(例子源于书上):

//不建议这样写
class Point {
    public double x;
    public double y;
}

//建议这样写
class Point {
    private double x;
    private double y;

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }
}

理解:

例外:


17、最小化可变性

关键字:可变性

首先我们给不可变的类一个基本的定义:

理解:

缺点:

为每一个不同的值都需要创建一个单独的对象,导致性能问题。

总结:

除非有很好的理由能够说明一个类应该是可变的,否则尽量将其设置为不可变的。


18、组合由于继承

关键词:组合继承

跨越包级的继承很危险(对类来说)的。

组合:

不继承一个现有的类,而是在新的类里面持有一个私有的现有类的对象。对于现有类的一些实现,新的类实现一个同名方法并在内部调用现有类的方法。

优点:

理解:

注意:

总结:

适合使用继承的情况:只有子类真的是父类的子类型的情况下才适合使用继承。即两者中存在"B is A"的关系,才应该让B继承A。


19、要么设计继承并提供文档说明,要么就禁用继承

如题,字面意思。

可继承的类:

禁用继承:

总结:


20、接口优于抽象类

关键字: 接口抽象类

JAVA对于抽象类只允许单一继承,而对于接口来说可以多实现。

理解:

JAVA对类的继承的结构是垂直的,也就是说一个类继承了它的父类,那么它就一定满足"A is B"的描述,也就是说,它的根源是被确定了的。

但是接口只是一种实现,它对外表述的是"A can be B",这表示A是多变的,它强调了A是具有某一些行为是符合它被作为B的要求,所以它应该是有多种实现的。


相关链接:
EffectiveJava笔记[一]
EffectiveJava笔记[二]
EffectiveJava笔记[三]

上一篇 下一篇

猜你喜欢

热点阅读