Java中抽象类和接口的区别
在Java中,抽象是通过抽象类和接口实现的。两者都包含抽象方法,子类或实现类必须实现这些方法。以下是抽象类和接口之间的一些重要区别。
序号 | 关键点 | 抽象类 | 接口 |
---|---|---|---|
1 | 支持的方法 | 抽象类可以同时具有抽象方法和具体方法。 | 接口只能包含抽象方法。从Java 8开始,它可以包含默认方法和静态方法。 |
2 | 多重继承 | 不支持多重继承。 | 接口支持多重继承。 |
3 | 支持的变量 | 支持final、非final、static和非static变量。 | 只允许static和final变量。 |
4 | 实现 | 抽象类可以实现接口。 | 接口不能实现接口,它可以扩展接口。 |
5 | 关键字 | 抽象类使用abstract关键字声明。 | 接口使用interface关键字声明。 |
6 | 继承 | 抽象类可以使用extends关键字继承另一个类并实现接口。 | 接口只能继承接口。 |
7 | 继承 | 抽象类可以使用extends关键字继承。 | 接口只能使用implements关键字实现。 |
8 | 访问权限 | 抽象类可以具有任何类型的成员,例如private、public。 | 接口只能具有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
广告