今天看到Effective Java书中提到了一个子类化的概念,网上查了下说是什么
组合不是继承。还是有些不太明白,按照这个说法,子类化是不是可以理解为
那个装饰者模式呢?装饰者模式不也是组合扩展吗?请知道的大神,告诉下这样理解对吗? 谢谢了。

java 的子类化 是什么?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- SeventeenWen 2016-06-22 12:17关注
//这是一个父类Demo public class SunDemo { //私有的构造器 private SunDemo(){ } //通过静态工厂方法得到对象 public static SunDemo value(){ return new SunDemo(); } //父类的方法 public void say(){ System.out.println("SunDemo say()"); } }
//子类Demo public class Demo extends SunDemo{ }
error:Implicit super constructor SunDemo() is not visible for default constructor. Must define an explicit constructor
说明SunDemo没有公共的构造器,它不允许被继承。就是说你的类使用了静态工厂方法提供对象的实例化,没有提供public的构造器,那么这个类就不允许被继承。我们如果想要在Demo类中使用SunDemo的方法就得使用复合。
public class Demo { SunDemo d = null; @Test public void DemoTest(){ d=SunDemo.value(); d.say(); }
}
解决 12无用