A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明:
1. A a0=new A();
2. A a1 =new B();
3. A a2=new C();
问以下哪个说法是正确的?( )
第1行不能通过编译
第1、2行能通过编译,但第3行编译出错
第1、2、3行能通过编译,但第2、3行运行时出错
第1行、第2行和第3行的声明都是正确的
正确答案: A
抽象类和接口不能实例化,但抽象类有构造方法,而接口没有!
接口没有构造方法所以不能被实例化。抽象类有构造方法,但是不是用来实例化的,是用来初始化的。可以通过多态让父类引用指向子类对象。
抽象类、接口不能直接进行实例化,需要通过子类的向上转型进行实例化
抽象类可以继承抽象类,接口也可以继承接口