Java中抽象类和接口之间的区别

在Java中,使用Abstract类和接口来实现抽象。两者都包含子类或实现类必须实现的抽象方法。以下是抽象类和接口之间的重要区别。

序号

抽象类
接口
1
支持的方法
抽象类既可以具有抽象方法,也可以具有具体方法。
接口只能具有抽象方法。从Java 8开始,它可以具有默认方法以及静态方法。
2
多重继承
不支持多重继承。
接口支持多重继承。
3
支持的变量
支持最终,非最终,静态和非静态变量。
仅允许使用静态变量和最终变量。
4
实作
抽象类可以实现一个接口。
接口不能实现接口,它可以扩展接口。
5
关键词
使用abstract关键字声明的抽象类。
使用interface关键字声明接口。
6
继承
抽象类可以使用extends关键字继承另一个类并实现一个接口。
接口只能继承一个接口。
7
继承
可以使用extends关键字继承抽象类。
接口只能使用Implements关键字实现。
8
访问
抽象类可以具有任何类型的成员,如private,public。
接口只能有公共成员。

抽象类与接口的示例

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