📜  java herencia - Java (1)

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

Java继承

在Java中,继承是实现面向对象编程的重要概念之一。它允许我们创建一个新类,并可以从现有类继承属性和方法。

什么是Java继承?

继承是一种机制,它允许一个Java类(称为子类或派生类)使用另一个类(称为父类或基类)的属性和方法。子类可以继承父类的公共和受保护的属性和方法,而不必重新定义它们。子类可以添加新的属性和方法,也可以重写父类的方法。

如何使用Java继承?

在Java中,使用关键字 extends 来创建一个新类并继承另一个类。例如,以下代码展示了如何创建一个名为 Dog 的类,继承自 Animal 类:

public class Animal {
   public void eat() {
      System.out.println("Animal is eating");
   }
}

public class Dog extends Animal {
   public void bark() {
      System.out.println("Dog is barking");
   }
}

在上面的代码中,我们定义了 Animal 类,它有一个 eat() 方法。然后,我们定义了 Dog 类,使用关键字 extends 来继承 Animal 类,并添加了一个名为 bark() 的新方法。

现在,我们可以创建一个 Dog 对象,它可以调用 eat()bark() 方法:

public static void main(String[] args) {
   Dog myDog = new Dog();
   myDog.eat();
   myDog.bark();
}

输出结果为:

Animal is eating
Dog is barking
继承的类型

Java继承分为以下4种类型:

  1. 单继承:一个类继承自另一个类。
  2. 多重继承:一个类继承自多个类。Java不支持多重继承,但是它支持接口多重继承。
  3. 多层继承:一个类继承自另一个类,并且这个类又被另一个类继承。比如,类C继承自类B,而类B又继承自类A。
  4. 菱形继承:多个类继承自同一个类,然后这些类又被同一个类继承。因此,它们形成了一个菱形的结构。
super关键字

在子类中,如果要引用父类的属性或方法,可以使用 super 关键字。以下是一些示例:

  • 引用父类的构造函数:
public class Dog extends Animal {
   public Dog() {
      super();
   }
}

在上面的代码中,我们在 Dog 类的构造函数中使用了 super() 方法来调用父类的构造函数。

  • 引用父类的属性:
public class Animal {
   protected String name = "Animal";
   
   public void eat() {
      System.out.println("Animal is eating");
   }
}

public class Dog extends Animal {
   public void printName() {
      System.out.println(super.name);
   }
}

在上面的代码中,我们在 Dog 类中使用了 super.name 来引用父类的 name 属性。

  • 引用父类的方法:
public class Animal {
   protected String name = "Animal";
   
   public void eat() {
      System.out.println("Animal is eating");
   }
}

public class Dog extends Animal {
   public void eat() {
      super.eat();
      System.out.println("Dog is eating");
   }
}

在上面的代码中,我们在 Dog 类中使用了 super.eat() 来引用父类的 eat() 方法,并在方法中添加了自己的代码。

总结

继承是Java中实现面向对象编程的重要概念之一。它允许我们创建一个新类,并可以从现有类继承属性和方法。通过 extends 关键字可以创建一个新类并继承另一个类。可以使用 super 关键字引用父类的属性和方法。Java继承分为单继承、多重继承、多层继承和菱形继承。