可以用A声明,但是A没有构造方法,所以只能用B来声明。
A a1 = new B();

解决方案 »

  1.   

    支持大黄,javadoc的例子
    List list = new Vector(); // List是接口
      

  2.   

    接口和抽象类都也是声明变量,但是不能实例化
    这个变量的实例化必须是一个真实类,这样做的
    目的也就是为了OO里的多态啊
    如A a1 = new B();
      

  3.   

    以我拙见,可以用接口构造实例,但仅限于匿名内部类for example: somewhere in Abc.javanew JButton().add(new ActionListener(){
       public void actionPerformed(ActionEvent e){
          System.out.println("Please tell me if my thought is right");
       }
    }); //Suppose this is the first inner anonymous class in Abc.java.其实,这个类的确切类型是Abc$1
    另外,有时候,在其他地方,我们仍然可以使用这些匿名内部类,前提是这些类没有用到其外部类中的东西(特别是局部变量)。for another example: somewhere in Xyz.javanew JButton.addActionListener(new Abc$1());
      

  4.   

    接口和抽象类都也是声明变量,但是不能实例化....
    请看://抽象类和接口的综合实例//定义了SuperAbstract、SubAbstract两个抽象类和一个接口AsSuper,其中SubAbstract继承了SuperAbstract,
    //又实现了AsSuper,之后,又定义了一个类p109,他又继承了类SubAbstract,可以
    //看到在类中,抽象地实现了接口中的两个方法x()和y(),因为SubAbstract是一个抽象类,
    //而在p109中,才真正实现了这两个方法,
    //而SubAbstract中定义的方法b(),就没有实现。abstract class SuperAbstract{
    void a(){
    System.out.println("defined a() in SuperAbstract.");
    }
    abstract void b();
    abstract int c(int i);
    }
    interface AsSuper{
    void x();
    void y();
    }abstract class SubAbstract extends SuperAbstract implements AsSuper{
    public void b(){
    System.out.println("in SubAbstract,implements b() from SuperAbstract");
    }
    abstract String f();
    abstract void g();
    }public class p109 extends SubAbstract{
    public void x(){
    System.out.println("in mainclass ,must implement x() from interface!");
    }
    public void y(){
    System.out.println("in mainclass ,must implement y() from interface!");
    }
    public int c(int i){
    System.out.println(i+"in mainclass, implement c() from SuperAbstract.");
    return i;
    }
    public String f(){
    return"in mianclass ,implementd f() from SubAbstract.";
    }
    public void g(){
    System.out.println("in mainclass ,implementd g() from SubAbstract.");
    }
    public static void main(String args[]){
    p109 instance=new p109();
    instance.x();
    instance.y(); instance.a();
    instance.b();
    instance.c(100); System.out.println(instance.f());
    instance.g();
    }
    }
      

  5.   

    OK, I see. Thanks to all of you.