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

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

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

示例

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.