Java 中抽象类和接口的区别

java programming java8object oriented programming

以下是 Java 中接口和抽象类之间的显著区别。

抽象类接口
抽象类可能包含具体方法。接口的所有方法都是抽象的。
要使用抽象类,您需要继承它。如果有抽象方法,则提供其主体(覆盖)。要使用接口,您需要实现该接口并提供其主体(覆盖)其中的所有抽象方法。
抽象类的成员可以是公共的、私有的、受保护的或默认的。默认情况下,接口的所有成员都是公共的。

示例

public class Tester {
   public static void main(String[] args) {

      Car car = new Car();
      car.setFuel();
      car.run();
      Truck truck = new Truck();
      truck.setFuel();
      truck.run();
   }
}
interface Vehicle {
   public void setFuel();
   public void run();
}
class Car implements Vehicle {
   public void setFuel() {
      System.out.println("Car: Tank is full.");
   }
   public void run() {
      System.out.println("Car: Running.");
   }
}
abstract class MotorVehicle {
   public void setFuel() {
      System.out.println("MotorVehicle: Tank is full.");
   }
   abstract public void run();
}
class Truck extends MotorVehicle {
   public void run() {
      System.out.println("Truck: Running.");
   }
}

输出

Car: Tank is full.
Car: Running.
MotorVehicle: Tank is full.
Truck: Running.

相关文章