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

抽象类的子类
我想问一下..有时一个表达式..返回的是一个抽象类..这个应该是这个类的子类吧..可是他里面的抽象方法并没有去实现..他的子类都可以直接用...抽象方法里面应该什么实现也没有.但为什么还能用呢??

------解决方案--------------------
这就是多态。
------解决方案--------------------
简单例子:
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位的解释吧。这个一定要搞清楚。

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