在Java中,使用Abstract类和接口来实现抽象。两者都包含子类或实现类必须实现的抽象方法。以下是抽象类和接口之间的重要区别。
| 序号 | 键 | 抽象类 | 接口 |
|---|---|---|---|
| 1 | 支持的方法 | 抽象类既可以具有抽象方法,也可以具有具体方法。 | 接口只能具有抽象方法。从Java 8开始,它可以具有默认方法以及静态方法。 |
| 2 | 多重继承 | 不支持多重继承。 | 接口支持多重继承。 |
| 3 | 支持的变量 | 支持最终,非最终,静态和非静态变量。 | 仅允许使用静态变量和最终变量。 |
| 4 | 实作 | 抽象类可以实现一个接口。 | 接口不能实现接口,它可以扩展接口。 |
| 5 | 关键词 | 使用abstract关键字声明的抽象类。 | 使用interface关键字声明接口。 |
| 6 | 继承 | 抽象类可以使用extends关键字继承另一个类并实现一个接口。 | 接口只能继承一个接口。 |
| 7 | 继承 | 可以使用extends关键字继承抽象类。 | 接口只能使用Implements关键字实现。 |
| 8 | 访问 | 抽象类可以具有任何类型的成员,如private,public。 | 接口只能有公共成员。 |
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