在Java中,实现继承和多态是面向对象编程的两个重要特性。下面分别介绍它们的实现方式:
- 继承(Inheritance)
继承允许一个类(子类)继承另一个类(父类)的属性和方法。这样,子类可以重用父类的代码,同时还可以扩展和覆盖父类的方法。要实现继承,需要在子类的定义前使用extends
关键字。
示例:
// 父类 class Animal { public void eat() { System.out.println("Animal is eating"); } } // 子类 class Dog extends Animal { // 继承父类的eat()方法 @Override public void eat() { System.out.println("Dog is eating"); } // 新增方法 public void bark() { System.out.println("Dog is barking"); } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.eat(); // 输出 "Dog is eating" dog.bark(); // 输出 "Dog is barking" } }
- 多态(Polymorphism)
多态是指不同类的对象可以通过相同的接口进行调用,从而实现不同的行为。多态的实现主要依赖于接口和父类引用。
示例:
// 父类 class Animal { public void makeSound() { System.out.println("Animal makes a sound"); } } // 子类1 class Dog extends Animal { @Override public void makeSound() { System.out.println("Dog barks"); } } // 子类2 class Cat extends Animal { @Override public void makeSound() { System.out.println("Cat meows"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Dog(); // 使用父类引用指向子类对象 myAnimal.makeSound(); // 输出 "Dog barks" myAnimal = new Cat(); // 修改父类引用的指向 myAnimal.makeSound(); // 输出 "Cat meows" } }
在这个例子中,我们使用父类引用myAnimal
分别指向子类Dog
和Cat
的对象。当我们调用myAnimal.makeSound()
方法时,会根据实际的对象类型(Dog
或Cat
)输出不同的结果,这就是多态的体现。