Java中抽象类与接口10问10答

来源:互联网 发布:数据分析师学历 编辑:程序博客网 时间:2024/05/21 09:37

原文地址:http://javarevisited.blogspot.com/2013/04/10-abstract-class-and-interface-interview-question-java-answers.html

1. Java中抽象类能否有构造函数?
抽象类中可以定义自己得构造函数,可以用于初始化抽象类中成员变量;
2. 抽象类可否实现实现已有的接口?
抽象类依然可以用implements方式来实现接口,但不用实现接口中所有的方法;
3. 抽象类是否可以申明成final类型?

抽象类不能申明为final类型。抽象类主要是为其他类继承而产生的,若定义为final

类型,将不能被其他类继承,违背了初衷,‘

4. 抽象类是否可以包含static申明的方法?

抽象类中可以定义声明static类型的方法,抽象类中抽象方法一般是用于子类实现,

对于抽象类中static类型的方法,将不会被子类重写。

5. 能否创建抽象类的实例?

不能,抽象类不能创建属于自己的实例,即使抽象类中没有包含任何抽象方法,也

不能创建该抽象类的实例,换句话说,只要是abstract声明的类,都不能创建实例。

编译器对于abstract类型的类会认为:1.该类包含未实现的方法,2.该类不可被实例化;
6. 在定义抽象类的时候是否一定要定义一些抽象方法出来?

不,抽象类可包含抽象方法,也可以不包含。对于不包含抽象方法的抽象类,编译器

还是会给该类加一些抽象类应该具备的特性。

但是换句话说,既然类中所有方法都有具体实现,为什么还要声明该类为abstract类

型呢?所以为了不失抽象类的本性,定义抽象类的时候还是要包含抽象方法。

7. 抽象类与接口之间的异同点?
该问题联想到面向对象的概念(OOPS):抽象,

8. 在什么情况下,你更倾向于使用抽象类来代替接口?

当我们需要对基类扩充一些新方法时,抽象类比接口更有优势;另外,当一个已经定

义的接口中有大量未实现的方法时,你如果继承该接口,就需要实现接口所有方法,

这显得很没必要。

9. Java中抽象方法具体含义?
抽象方法就是没有方法体的方法,并且用abstract关键字声明它;
10. 抽象方法能否包含main方法?
当然可以,并且可以同过main方法来执行该抽象方法,只是不能创建该抽象方法的实例。


0 0