当前位置: 代码迷 >> J2SE >> 抽象类的子类,该如何解决
  详细解决方案

抽象类的子类,该如何解决

热度:64   发布时间:2016-04-24 12:52:33.0
抽象类的子类
我想问一下..有时一个表达式..返回的是一个抽象类..这个应该是这个类的子类吧..可是他里面的抽象方法并没有去实现..他的子类都可以直接用...抽象方法里面应该什么实现也没有.但为什么还能用呢??

------解决方案--------------------
这就是多态。
------解决方案--------------------
简单例子:
Java code
public class Test {    public static void main(String[] args) {        Base obj1 = getBase();        obj1.print();        Base obj2 = getBase("test");        obj2.print();    }    public static Base getBase() {        return new Base() {            @Override            public void print() {                System.out.println("concrete implementation");            }        };    }    //another implementation    public static Base getBase(String str) {        class Sub extends Base {            @Override            public void print() {                System.out.println("Another Implementation");            }        }        return new Sub();    }}abstract class Base {    public abstract void print();}
------解决方案--------------------
把楼上 的 加上注释

Java code
public class ReturnAbstract {    //这方法返回一个抽象类的对象,这时要写一个子类 从抽象类继承; 最后是返回这个子类的对象    public static Base getBase(String str) {        class Sub extends Base {            @Override            public void print() {                System.out.println("Another Implementation");            }        }        return new Sub();    }    //返回抽象类自己一个对象,这时要把原来没有实现  的方法实现    public static Base getBase() {        return new Base() {            @Override            public void print() {                System.out.println("concrete implementation");            }        };    }        public static void main(String[] args) {        Base obj1 = ReturnAbstract.getBase();        obj1.print();        Base obj2 = ReturnAbstract.getBase("test");//调用的时候 是多态,人家要求返回的是父类的对象,而你实际上是子类的对象 子类的对象实际上也是父类的对象        obj2.print();//调用子类的方法    }}abstract class Base {    public abstract void print();}
------解决方案--------------------
呵呵,至少他还是个类,如果是接口呢?里面啥也没有,为啥还都能调用啊?

看看楼上2位的解释吧。这个一定要搞清楚。

你使用的是一个引用,具体实现功能的,你可以根本不用管它。你只要能用就行了。
  相关解决方案