继承,多态

来源:互联网 发布:开票产品利润算法 编辑:程序博客网 时间:2024/05/19 14:52

转换类

接口

interface Converter {    void convert();}

实现类(父类)

class SuperConverter implements Converter {    public void convert() {        System.out.println("SuperConverter - convert");    }}

实现类(子类)

class SubConverter extends SuperConverter {    public void convert() {        System.out.println("SubConverter - convert");    }}

控制器类

实现类(父类)

class SuperFacade {    public Converter converter;    public void execute() {        getConverter().convert();    }    public void setConverter(Converter converter) {        this.converter = converter;    }    public Converter getConverter() {        System.out.println("SuperFacade - getConverter");        return converter;    }}

实现类(子类)

class SubFacade extends SuperFacade {    public Converter converter;    public void execute() {        getConverter().convert();    }    public void setConverter(Converter converter) {        this.converter = converter;    }    public Converter getConverter() {        System.out.println("SubFacade - getConverter");        return converter;    }}

测试类

public class Test {    public static void main(String[] args) {        SubFacade _sub1 = new SubFacade();        _sub1.setConverter(new SuperConverter());        _sub1.execute();        SubFacade _sub2 = new SubFacade();        _sub2.setConverter(new SubConverter());//改变了super class的属性值        _sub2.execute();    }}

输出结果

D:\>javac Test.javaD:\>java TestSubFacade - getConverterSuperConverter - convertSubFacade - getConverterSubConverter - convert

控制器类

父类

class Super {    public void doSth1() {        System.out.println("Super - do something 1");    }    public void doSth2() {        System.out.println("Super - do something 2");    }}

子类

class Sub extends Super {    public void doSth1() {        System.out.println("Sub - do something 1");    }    public void doSth3() {        System.out.println("Sub - do something 3");    }}

测试类

public class Test {    public static void main(String[] args) {        Object obj = new Integer(1);          System.out.println(obj.getClass());        System.out.println("\n");          Super _super = new Super();        _super.doSth1();        _super.doSth2();        System.out.println("\n");          Sub _sub = new Sub();        _sub.doSth1();        _sub.doSth3();        System.out.println("\n");          _super = new Sub();        _super.doSth1();        _super.doSth2();        //_super.doSth3(); //编译期间会提示找不到该方法        System.out.println("\n");          _sub = (Sub)_super;        _sub.doSth1();        _sub.doSth2();        _sub.doSth3();    }}

输出结果

D:\>javac Test.javaD:\>java Testclass java.lang.IntegerSuper - do something 1Super - do something 2Sub - do something 1Sub - do something 3Sub - do something 1Super - do something 2Sub - do something 1Super - do something 2Sub - do something 3

控制器类
父类

class Super {    public void doSth() {        doOther();    }    public void doOther() {        System.out.println("Super - do other");    }}

子类

class Sub extends Super {    public void doOther() {        System.out.println("Sub - do other");    }}

测试类

class Test {    public static void main(String[] args) {        Sub _sub = new Sub();        _sub.doSth();    }}

输出结果

D:\>javac Test.javaD:\>java TestSub - do other
原创粉丝点击