Thinking in Java(6)-combinning composition and inheritance

来源:互联网 发布:cda数据分析师证书考试 编辑:程序博客网 时间:2024/05/30 05:17

一个结合composition 和inheritance的简单例子:

class Plate {    Plate(int i) {        System.out.println("Plate constructor");    }}class DinnerPlate extends Plate {    DinnerPlate(int i)    {        super(i);        System.out.println("DinnerPlate constructor");    }}class Utensil {    Utensil(int i) {        System.out.println("Utensil constructor");    }}class Spoon extends Utensil {    Spoon (int i)    {        super(i);        System.out.println("Spoon  constructor");    }}class Fork extends Utensil {    Fork(int i){        super(i);        System.out.println("Fork constructor");    }}class Knife extends Utensil {    Knife(int i){        super(i);        System.out.println("Knife constructor");    }}class Custom {    Custom(int i)    {        System.out.println("Custom constructor");    }}public class PlaceSetting extends Custom {    private Spoon sp;    private Fork frk;    private Knife kn;    private DinnerPlate pl;public PlaceSetting(int i) {        super(i + 1);        sp = new Spoon(i + 2);        frk = new Fork(i + 3);        kn = new Knife(i + 4);        pl = new DinnerPlate(i + 5);        System.out.println("PlaceSetting constructor");    }    public static void main(String[] args) {    PlaceSetting x = new PlaceSetting(1);       }}

要注意,子类中的构造函数应该在基类的构造函数之后调用。
运行结果为:

Custom constructorUtensil constructorSpoon  constructorUtensil constructorFork constructorUtensil constructorKnife constructorPlate constructorDinnerPlate constructorPlaceSetting constructor
1 0
原创粉丝点击