📜  Java继承(1)

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

Java继承

继承是一种重要的面向对象编程(OOP)概念,在Java中,继承是实现代码重用并创建新类的一种方法。

什么是继承

继承提供了一种从一个类获取所有方法和属性的能力,并将它们应用于另一个类。继承的基本思想是,可以创建一个类,该类是现有类的子类,并从现有类继承方法和属性。

子类可以重写父类方法,从而改变其行为。例如,假设有一个名为Bird的类,它有一个名为fly的方法。可以继承Bird类,并创建一个名为Penguin的子类,该子类覆盖fly方法以实现只在水中游泳。

语法

在Java中,继承通过使用关键字extends来实现。下面是一个简单的示例:

class ChildClass extends ParentClass{
    // ChildClass继承了ParentClass中的所有属性和方法
    // 子类可以重写方法,以改变其行为
}
示例

下面是一个使用继承的Java示例:

class Animal {
   // Animal类的属性和方法
}

class Dog extends Animal {
   // Dog类继承Animal类的属性和方法
}

public class Main {
   public static void main(String[] args) {
      Dog dog = new Dog();
      dog.bark();
   }
}

在上面的示例中,Dog类继承了Animal类,并使用bark方法扩展了其行为。

方法重写

在继承中,子类可以重写其父类中定义的方法。子类需要使用与父类中定义的方法相同的名称,并且参数列表也必须相同。下面是一个简单的示例:

class Animal {
   public void move() {
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("狗可以跑和走");
   }
}

public class TestDog {
   public static void main(String args[]) {
      Animal a = new Animal();   
      Dog b = new Dog();   

      a.move();   
      b.move();   
   }
}

在上面的示例中,子类Dog重写了其父类Animal中的move方法以改变其行为。

super关键字

在子类中,可以使用super关键字来调用其父类的构造函数、属性和方法。下面是一个简单的示例:

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

   public void display() {
      System.out.println("我的名字是:" + name);
   }
}

class Dog extends Animal {
   String breed;
   Dog(String name, String breed) {
      super(name); // 调用父类Animal的构造函数
      this.breed = breed;
   }

   public void display() {
      super.display(); // 调用父类Animal的display方法
      System.out.println("我的品种是:" + breed);
   }
}

public class TestDog {
   public static void main(String args[]) {
      Dog d = new Dog("旺财", "土狗");
      d.display();
   }
}

在上面的示例中,子类Dog调用了其父类Animal的构造函数和display方法,并添加了自己的属性和方法。在子类的display方法中,使用了super.display()来调用其父类的display方法,并使用this.breed添加了一个新的输出行。

总结

在Java中,继承是一种实现代码重用和创建派生类的方法。子类可以继承并覆盖父类中的属性和方法,或使用super关键字调用父类中的构造函数和方法。继承是一种强大的OOP概念,可以大大提高代码的复用性和可维护性。