全国咨询热线:400-009-1906

Java抽象类和接口的区别

抽象类和接口都用于实现抽象,可以声明抽象方法。 抽象类和接口都不能被实例化。但是在下面给出的抽象类和接口之间有许多区别。

更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。

抽象类 接口
抽象类可以有抽象和非抽象方法。 接口只能有抽象方法。 从Java 8开始,它也可以有默认和静态方法。
抽象类不支持多重继承。 接口支持多继承。
抽象类可以有final非final,静态和非静态变量。 接口只有静态和final变量。
抽象类可以提供接口的实现。 接口不能提供抽象类的实现。
abstract关键字用来声明抽象类。 interface关键字用于声明接口。

简单地说,抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)。

Java抽象类和接口的示例

让我们来看看下面一个简单的例子,使用接口和抽象类。

 //Creating interface that has 4 methods   interface A {     void a();// bydefault, public and abstract      void b();      void c();      void d(); }  // Creating abstract class that provides the implementation of one method of A // interface abstract class B implements A {     public void c() {         System.out.println("I am C");     } }  // Creating subclass of abstract class, now we need to provide the // implementation of rest of the methods class M extends B {     public void a() {         System.out.println("I am a");     }      public void b() {         System.out.println("I am b");     }      public void d() {         System.out.println("I am d");     } }  // Creating a test class that calls the methods of A interface class Test5 {     public static void main(String args[]) {         A a = new M();         a.a();         a.b();         a.c();         a.d();     } } 
Java

执行上面的示例代码,得到以下结果 -

 I am a I am b I am c I am d

更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。