📜  在Java中使用抽象类实现接口(1)

📅  最后修改于: 2023-12-03 15:23:24.015000             🧑  作者: Mango

在Java中使用抽象类实现接口

在Java中,我们可以使用抽象类来实现接口。抽象类是一个不能被实例化的类,通常用于定义子类的通用特征和行为。接口定义了一个类实现的协议。

创建抽象类

我们可以使用abstract关键字来定义一个抽象类。一个抽象类可以包含抽象方法、非抽象方法,和成员变量。抽象方法是一种没有实现的方法,需要子类来实现。非抽象方法是有实现的方法,子类可以重写或继承。成员变量则按照普通类的形式定义。

abstract class Animal {
  String name;

  public Animal(String name) {
    this.name = name;
  }

  abstract String sound();

  void printName() {
    System.out.println(name);
  }
}

在上面的例子中,我们定义了一个抽象类Animal,其中包含了一个成员变量name,一个构造函数和两个方法。其中sound()方法是抽象方法,需要子类来实现。

实现接口

我们可以使用implements关键字来实现一个接口。一个类可以实现多个接口。当一个类实现一个接口时,它必须实现接口中的所有方法。

interface Runner {
  int getSpeed();

  void run();
}

abstract class Animal implements Runner {
  // ...
}

在上面的例子中,我们定义了一个接口Runner和一个抽象类AnimalAnimal类实现了Runner接口,并实现了接口中的所有方法。

抽象类继承抽象类

我们可以使用extends关键字来继承抽象类。子类可以继承父类的方法和成员变量,也可以重写父类的方法。

abstract class Mammal extends Animal {
  public Mammal(String name) {
    super(name);
  }

  abstract void eat();
}

在上面的例子中,我们定义了一个抽象类Mammal,它继承了Animal类。Mammal类添加了一个抽象方法eat()

小结

在Java中,抽象类和接口是两种不同的概念。抽象类是一个不能被实例化的类,它可以包含抽象方法、非抽象方法和成员变量。抽象类可以被继承,子类可以实现抽象方法或重写非抽象方法。接口则是一种协议,它定义了一个类实现的方法和常量。一个类可以实现多个接口,但必须实现接口中的所有方法。我们可以使用抽象类来实现接口,这样子类就可以继承抽象类,实现接口中的方法。