TIJ 复习笔记7

复用代码是Java众多引人注目的功能之一。

组合与继承是两种代码重用的机制。

本章概览:

  • 组合、继承、代理(java中没有delegation)
  • 组合继承一起用
  • 什么时候用组合、什么时候用继承
  • 介绍@Override
  • 介绍向上转型
  • 介绍protect
  • final关键字
  • 补充又一次说初始化及类的加载(加静分清成构造)

组合、继承和代理

组合

class Bed {
}
class House {
    Bed bed = new Bed()
}

继承

class Shape {
}
class Circle extends Shape{
}

代理

class Car {
    void forward(){
    }
    void backward(){
    }
}
class CarDelegation(){
        Car car = new Car();
        public void forward(){
            car.forward();
        }
        public void backward(){
            car.backward();
        }
}

什么时候用组合、什么时候用继承

语义上:
组合是 has-a的关系,继承是is-a的关系
方法上:
当一个类需要向上转型时,才使用继承。

开发现有类的一个特殊版本,就用继承。
使用现有类的功能,而非接口,就用组合。

@Override

当使用该注解时,就是覆盖(override)基类的方法,如果基类不存在对应的方法,编译器会保持,避免覆盖变成重载(overload)的情况。(实现接口时也可以用override)

final的方法不可以覆盖。

protected

包访问权限区分了,包内和包外。
protected给包外的派生类开放权限。

protected比包访问权限大。(protected的方法,在包内就已经能访问了)

向上转型

当派生类的引用转换成基类的引用时,称为向上转型。
类图上的方向是向上的箭头,所以称为向上转型。
(多态和RTTI中进一步阐述)

Final关键字

成员变量

加final,初始化之后不可以变。

成员方法

加final之后,不可以重载。

private方法,默认就是final的

加final之后,不可以继承

END

posted @ 2016-06-24 14:40  程序员杰诺斯  阅读(117)  评论(0编辑  收藏  举报