选择合成? 继承性的关联很难来修改superclass的接口。合成则提供了easier-to-change的途径。 通过继承的代码重用 class Fruit { //返回切割后的份数 public int peel() { System.out.println(“Peeling is appealing”); return 1; }
//将上面替换掉的新方法 public Peel peel() { return new Peel(1);//另外一个类 } }
class Apple extends Fruit { }
class Example1 { public static void main(String[] args) { Apple apple = new Apple(); int pieces = apple.peel(); //这里受到影响 } }