1、复用的两种方式?
- 组合。只需要在新的类中产生现有类的对象。
- 继承。按照现有的类型来创建新的类。无需改变现有类的形式,采用现有类的形式并在其中添加新的代码。super关键字。extends关键字。
2、什么情况使用组合,什么时候又要使用继承呢?
判断方法就是问一问自己是否需要从新类向基类进行向上转型。如果必须向上转型,则继承是必要的。
3、final关键字
- final 数据
- final 方法
- final 参数
- final 类
4、继承及初始化
5、代理
设计模式里面有个比较难懂的——代理模式,作者讲的很有趣,代理是组合和继承的中庸之道。
package son;
class Father{
public void get(){
System.out.println("father");
}
}
public class Son extends Father{
public static void main(String[] args) {
Father f = new Father();
f.get();
}
}
class FatherProxy{
private Father f = new Father();
public void get(){
f.get();
}
}
像直接把Father当做成员,那么father的方法就暴露给这个类了,那我们可以使用FatherProxy这样的代理类,我自己定义好get方法是怎么拿的,我自己知道是调用father的get方法,但是使用我这个代理的人不知道,我只告诉他你要用就用代理的get的方法就可以了。封装性就体现出来了。上面只是随便敲的一个简单例子。
6、继承的作用
- 继承的出现提高了代码的复用性。
- 继承的出现让类与类之间产生了关系,提供了多态的前提。
- 不要仅为了获取其他类中某个功能而去继承