抽象类 | 接口 |
1)抽象类可以具有抽象和非抽象的方法。 | 接口可以具有仅抽象方法。从Java 8开始,它还可以具有默认和静态方法。 |
2)抽象类不支持多重继承。 | 接口支持多重继承。 |
3)抽象类可以具有最终变量,非最终变量,静态变量和非静态变量。 | 接口只有静态变量和最终变量。 |
4)抽象类可以提供接口的实现。 | 接口无法提供抽象类的实现。 |
5)抽象关键字用于声明抽象类。 | interface关键字用于声明接口。 |
6)抽象类可以扩展另一个Java类并实现多个Java接口。 | 接口只能扩展另一个Java接口。 |
7)可以使用关键字" extends"扩展抽象类。 | 可以使用关键字" implements"实现接口。 |
8)Java 抽象类可以具有私有,受保护等类成员。 | 默认情况下,Java接口的成员是公共的。 |
9)示例: 公共抽象类Shape { 公共抽象void draw(); } |
示例: 公共接口Drawable { void draw(); } |
//Creating interface that has 4 methodsinterface A{
void a();
//bydefault, public and abstractvoid b();
void c();
void d();
}
//Creating abstract class that provides the implementation of one method of A interfaceabstract 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 methodsclass 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 interfaceclass Test5{
public static void main(String args[]){
A a=new M();
a.a();
a.b();
a.c();
a.d();
}
}
I am a I am b I am c I am d