Java抽象类(abstract class)和接口(interface)有什么区别和联系?抽象类、接口都是Java编程开发过程中经常应用到的内容,二者既有相似性同时也具有自身独特特点,新手同学如果没有彻底摸透往往会混淆使用。抽象类接口相关知识点应用也是最经常遇到的一个基础java面试题,不管原来知道不知道,现在告诉你,赶紧记牢面试无忧!

常见Java面试题之抽象类(abstract class)和接口(interface)异同

 

 

Java抽象类(abstract class)和接口(interface)区别和联系

 

 

抽象类(abstract class)和接口(interface)相似点

抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。

抽象类(abstract class)和接口(interface)区别

* 接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。
* 抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。
* 抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。
* 有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
 

本题涉及java知识点分析

Java 抽象类(abstract class)

在java中,有时会定义了一个父类,这个父类只有对方法的描述,但却没有在父类中写出对方法的实现,这种被定义的方法称为抽象方法。这种含有抽象方法的类就称为抽象类。用关键字abstract修饰。

抽象类特点
* 含有抽象方法的类必须被声明为抽象类。
* 抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。
* 不能用abstract修饰私有方法,构造方法,静态方法。
* 抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类。

Java接口(interface)

有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

接口的特点
* 用 interface 来定义。
* 接口中的所有成员变量都默认是由public static final修饰的。
* 接口中的所有方法都默认是由public abstract修饰的。
* 接口没有构造方法。构造方法用于创建对象。
* 实现接口的类中必须提供接口中所有方法的具体实现内容。
* 多个无关的类可以实现同一个接口。
* 一个类可以实现多个无关的接口。
* 与继承关系类似,接口与实现类之间存在多态性。
* 接口也可以继承另一个接口,使用extends关键字。
* 实现接口的类中必须提供接口中所有方法的具体实现内容。
* 多个无关的类可以实现同一个接口。
* 一个类可以实现多个无关的接口。



以上是思博网络为广大奔走在面试以及学习阶段的java同行整理的关于Java 抽象类接口可能遇到的面试问题以及重要知识点,可能存在不足或者需要补充,您有什么观点和认识,欢迎指正补充,大家一起快乐学Java,高薪在就业!
如果遇到什么疑问或者困惑,可以联系我们,乐于与您分享讨论!