Java抽象类和接口有什么不同呢?
Java抽象类和接口不同之处
我们都知道抽象类和接口都用于实现抽象,可以声明抽象方法。抽象类和接口都不能被实例化。
但是它们有什么不同之处呢?下文将一一道来,如下所示:
抽象类 | 接口 |
---|---|
抽象类可以有抽象和非抽象方法 | 接口只能有抽象方法。从Java 8开始,它也可以有默认和静态方法 |
抽象类不支持多重继承 | 接口支持多继承 |
抽象类可以有final ,非final ,静态和非静态变量 |
接口只有静态和final 变量 |
抽象类可以提供接口的实现 | 接口不能提供抽象类的实现 |
abstract 关键字用来声明抽象类 |
interface 关键字用于声明接口 |
总结以上所述:抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)
使用抽象类和接口
在大多数时候,使用接口和抽象类是设计系统的最佳方法,
Java抽象类和接口的示例
//创建具有4种方法的接口
interface A {
void a();// 默认使用修辞符是:public 和 abstract
void b();
void c();
void d();
}
// 创建实现接口A的方法的抽象类
//
abstract class B implements A {
public void c() {
System.out.println("I am C");
}
}
// 创建抽象类的子类,需要提供抽象类方法的实现
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");
}
}
// 创建一个调用A接口方法的测试类
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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。