首选方案 非最子级类构造函数中不调用自身函数⭐ 初始化操作直接在constructor中完成 缺点 外界想要初始化只能再新建一个对象 最子级实现类不允许被继承 符合合成复用原则 组合代替继承 不使用继承, 而是使用成员变量来组合父类到子类中 适用范围 仅适用于最子级的实现类,抽象类和接口都不能采用该方案 缺点 当父级链比较长的时候, 调用需要多级嵌套 备选方案 不允许子类重写指定方法 缺点: 子类类似方法名字需要作区分 被禁止重写的方法外界访问不了