在Java中,实现继承和多态是面向对象编程的两个重要特性。下面分别介绍它们的实现方式:
继承允许一个类(子类)继承另一个类(父类)的属性和方法。这样,子类可以重用父类的代码,同时还可以扩展和覆盖父类的方法。要实现继承,需要在子类的定义前使用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"
}
}
多态是指不同类的对象可以通过相同的接口进行调用,从而实现不同的行为。多态的实现主要依赖于接口和父类引用。
示例:
// 父类
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
)输出不同的结果,这就是多态的体现。