抽象类和接口都是用于实现抽象,我们可以声明抽象方法。抽象类和接口都不能被实例化。
【Java抽象类和接口的区别】但是有许多抽象类和接口之间的差异,下面给出。
抽象类 | 接口 |
---|---|
1) 抽象类可以有抽象方法和非抽象方法。 | 接口只能有抽象方法。由于Java 8,它也可以有默认和静态方法。 |
2)抽象类不支持多重继承。 | 接口支持多重继承。 |
3) 抽象类可以有final、non-final、static和non-static变量。 | 接口只有静态和最终的变量。 |
4) 抽象类可以提供接口的实现。 | 接口不能提供抽象类的实现。 |
5)使用abstract关键字声明抽象类。 | interface关键字用于声明接口。 |
6)一个抽象类可以扩展另一个Java类并实现多个Java接口。 | 一个接口可以扩展另一个Java接口。 |
7) 可以使用关键字“extends”扩展抽象类。 | 可以使用关键字“implements”来实现接口。 |
8)Java抽象类可以有像私人类成员,保护等。 | 默认情况下,Java接口的成员是公共的。 |
9)例子: public abstract class Shape{ public abstract void draw(); } | 例子:公共接口可拉的{空白画(); } |
抽象类和接口的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();
}}
输出:
I am a
I am b
I am c
I am d
推荐阅读
- Java接口
- Java抽象类
- Java instanceof操作符
- Java静态绑定和动态绑定
- Java多态性
- Java实例初始化块
- Java final关键字
- Java协变返回类型
- Java super关键字