在Java中,继承和多态是面向对象编程的两个重要特性。它们分别解决了代码复用和接口抽象的问题。
- 继承:
继承是一种创建类的方式,新创建的类继承了一个已存在的类的属性和方法。这样,新创建的类可以重用(或者覆盖)已存在类的行为,而不需要重新编写相同的代码。
继承的实现方式是通过关键字extends
来完成的。例如:
class Animal { void eat() { System.out.println("Animal eats"); } } class Dog extends Animal { // Dog类继承了Animal类,因此可以使用eat()方法 } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.eat(); // 输出 "Animal eats" } }
- 多态:
多态是指允许一个接口(或类)表示多种类型的能力。在Java中,多态主要体现在继承和接口实现上。多态的实现主要有两种方式:方法重写(覆盖)和接口实现。
方法重写(覆盖)是指子类重新定义了父类的方法,从而改变了方法的行为。这样,当我们使用子类对象调用该方法时,将会执行子类中的版本,而不是父类中的版本。例如:
class Animal { void eat() { System.out.println("Animal eats"); } } class Dog extends Animal { @Override void eat() { System.out.println("Dog eats"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Dog(); myAnimal.eat(); // 输出 "Dog eats" } }
接口实现是指一个类实现了一个或多个接口,从而继承了接口中的方法。接口定义了一组方法,但不提供具体实现。实现接口的类必须提供接口中所有方法的具体实现。例如:
interface Flyable { void fly(); } class Bird implements Flyable { @Override public void fly() { System.out.println("Bird flies"); } } public class Main { public static void main(String[] args) { Flyable myBird = new Bird(); myBird.fly(); // 输出 "Bird flies" } }
总结:
- 继承允许我们创建一个新类,并重用(或覆盖)已存在类的属性和方法。
- 多态允许我们使用一个接口(或类)表示多种类型,从而提高了代码的灵活性和可扩展性。