在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