java抽象类和接口的区别?java抽象类和接口区别面试题

admin 2020-04-21 15:17:38 java常见问答 8750

问题:关于Java的抽象类、接口,以下描述错误的是?

抽象类不一定含有抽象方法,接口中的方法都是抽象方法
一个类只能继承一个抽象类,但可以实现多个接口;一个接口可以继承多个接口
抽象类和接口中的方法都没有方法体
抽象类可以含有私有成员变量,接口不含有私有成员变量

答案:

3

解析:

1抽象类不一定含有抽象方法,接口中的方法都是抽象方法。

接口中的方法默认修饰符有public abstract。

2一个类只能继承一个一个抽象类,但可以实现多个接口;一个接口可以继承多个接口。

Java里类是单继承的,接口是可以多继承的,用关键字extends。

3抽象类和接口中的方法都没有方法体。

抽象类中的方法是可以有方法体的。JDK1.8之后,接口中的方法也可以有方法体,用default关键字修饰方法。

4抽象类可以含有私有成员变量,接口不含有私有成员变量。

接口中的成员变量都是public static final的,一般用作常量。

拓展:

抽象类是一种对事物的抽象,而接口是一种对行为的抽象;抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。 抽象类是一种模板式设计,而接口是一种行为规范,是一种辐射式设计。

抽象类:1、抽象类使用abstract修饰;2、抽象类不能实例化,即不能使用new关键字来实例化对象;3、含有抽象方法(使用abstract关键字修饰的方法)的类是抽象类,必须使用abstract关键字修饰;4、抽象类可以含有抽象方法,也可以不包含抽象方法,抽象类中可以有具体的方法;5、如果一个子类实现了父类(抽象类)的所有抽象方法,那么该子类可以不必是抽象类,否则就是抽象类;6、抽象类中的抽象方法只有方法体,没有具体实现;

接口:1、接口使用interface修饰;2、接口不能被实例化;3、一个类只能继承一个类,但是可以实现多个接口;4、接口中方法均为抽象方法;5、接口中不能包含实例域或静态方法(静态方法必须实现,接口中方法是抽象方法,不能实现)