在Java中扩展两个类的方法

690 阅读2分钟

Java是一种面向对象的编程语言,允许你将一个class ,扩展到另一个class

扩展一个类也被称为继承机制。新的类继承了现有类的属性和行为。

继承很有用,因为你可以重复使用现有的类定义作为新类的基础。

在下面的代码中,Poodle 类继承了Dog 类,所以你可以从Poodle 实例中调用Dog 类的方法并访问其属性:

class Dog {
String genus = "Canis";
void bark() {
System.out.println("Woof!");
}
}
class Poodle extends Dog { }

class Main {
public static void main(String[] args) {
Poodle poo = new Poodle();
 poo.bark(); // Woof!
 System.out.println(poo.genus); // Canis
 }
}

然而,Java并不支持多重继承。这意味着你不能在一个类中扩展两个或更多的类。

扩展多个类将导致Java在编译时抛出一个错误:

class Animal {
boolean alive = true;
}
class Poodle extends Dog, Animal { }
// ERROR: Class cannot extend multiple classes

当你需要在Java中扩展两个或多个类时,你需要将这些类重构为接口。

这是因为Java允许在一个类上实现多个接口。

在下面的代码中,DogAnimal 类被重构为接口:

interface Dog {
 String genus = "Canis";
default void bark() {
System.out.println("Woof!");
}
}
interface Animal {
 boolean alive = true;
}
class Poodle implements Dog, Animal { }

class Main {
public static void main(String[] args) {
Poodle poo = new Poodle();
poo.bark(); // Woof!
 System.out.println(poo.genus); // Canis
 System.out.println(poo.alive); // true
 }
}

从上面的例子可以看出,DogAnimal 接口可以在Poodle 类中实现。

这使得你可以从任何Poodle 类的实例中访问DogAnimal 接口的属性和方法。

总而言之,Java的继承机制仅限于继承一个类,但在一个类上可以继承(实现)多个接口。

一个interface 是一个参考类型,用于指定一个class 的属性和行为。

你不能创建一个interface 的实例。相反,你需要在一个class 上实现interface ,并实例化实现class

当你需要扩展两个或更多的类时,使用接口是Java的唯一方法。