abstract class(抽象类)和 interface(接口)有什么区别?【面试题详解】

今天爱分享给大家带来abstract class(抽象类)和 interface(接口)有什么区别?【面试题详解】,希望能够帮助到大家。
【参考答案】
含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。含有
abstract 方法的类必须定义为 abstract class,abstract class 类中的方法不必是抽象的。
abstract class 类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象
构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必
须定义为 abstract 类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。
接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public
static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非
抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然
eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且
默认即为 public abstract 类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可
以任意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public
static final 类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
下面接着再说说两者在应用上的区别:
【分析】
这道题的思路是先从总体解释抽象类和接口的基本概念,然后再比较两者的语法细节,
最后再说两者的应用区别。比较两者语法细节区别的条理是:先从一个类中的构造方法、普
通成员变量和方法(包括抽象方法),静态变量和方法,继承性等方面来回答。

人已赞赏
Java

Math.round(11.5)等於多少? Math.round(-11.5)等於多少?【面试题详解】

2020-12-1 16:43:18

Java

Collection 框架中实现比较要实现什么接口?【面试题详解】

2020-12-1 16:48:28