在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"
}
}
总结: