
在Java中,抽象是通过抽象类和接口来实现的。两者都包含子类或实现类必须实现的抽象方法。以下是抽象类和接口之间的重要区别。
| Sr.号
|
键
|
抽象类
|
接口 立即学习“Java免费学习笔记(深入)”;
|
thead>
| 1
|
支持的方法
|
抽象类可以同时具有抽象方法和具体方法。
|
接口只能有抽象方法。从 Java 8 开始,它可以具有默认方法和静态方法。
|
| 2
|
多重继承
|
多重继承不是
|
接口支持多重继承。
|
| 3
|
支持的变量
| 支持最终、非最终、静态和非静态变量。
|
仅允许静态和最终变量。
|
| 4
|
实现
|
抽象类可以实现接口。
|
接口可以不实现接口,也可以扩展接口。
|
| 5
|
关键字
|
使用abstract关键字声明的抽象类。
|
接口使用interface关键字声明。
|
| 6
|
继承
|
抽象类可以继承另一个类使用 extends 关键字并实现接口。
|
接口只能继承接口。
|
7
| 继承
|
抽象类可以使用extends关键字继承。
|
接口只能使用implements关键字实现。
|
| 8
|
访问
|
抽象类可以有任何类型的成员,如私有、公共。
|
接口只能有公共成员。
|
抽象类与接口示例
JavaTester.java
public class JavaTester {
public static void main(String args[]) {
Animal tiger = new Tiger();
tiger.eat();
Cat lion = new Lion();
lion.eat();
}
}
interface Animal {
public void eat();
}
class Tiger implements Animal {
public void eat(){
System.out.println("Tiger eats");
}
}
abstract class Cat {
abstract public void eat();
}
class Lion extends Cat{
public void eat(){
System.out.println("Lion eats");
}
}输出
Tiger eats
Lion eats