理解Java的继承与多态

154 阅读2分钟

在Java中,继承与多态是面向对象编程的核心概念之一。通过继承,子类可以从父类继承属性和方法,并且可以通过多态实现对不同对象的统一处理。

1. 子类与父类

在Java中,子类通过extends关键字继承父类。子类继承了父类的属性和方法,可以直接使用父类的公共成员。

// 父类
class Animal {
    String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void eat() {
        System.out.println(name + " is eating.");
    }
}

// 子类
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }
    
    public void bark() {
        System.out.println(name + " is barking.");
    }
}

在上面的例子中,Dog类继承了Animal类,所以可以直接调用name属性和eat()方法。

2.方法的重写与重载

2.1方法的重写

方法的重写是指子类重新定义了父类的方法,方法名、参数列表和返回类型必须相同。子类中的方法会覆盖父类中的方法。

// 父类
class Animal {
    public void makeSound() {
        System.out.println("Animal makes a sound.");
    }
}

// 子类
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks.");
    }
}

在上面的例子中,Dog类重写了Animal类的makeSound()方法。

2.2方法的重载

方法的重载是指在同一个类中,方法名相同但参数列表不同的情况。重载方法可以有不同的参数个数、类型或顺序。

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
}

在上面的例子中,Calculator类有两个add()方法,一个接受两个整数参数,另一个接受两个double参数。

3.向上转型与向下转型

3.1向上转型

向上转型是指将子类对象转换为父类类型。这样做可以使得父类引用指向子类对象,实现多态。

在上面的例子中,Dog对象被向上转型为Animal类型。

3.2向下转型

向下转型是指将父类对象转换为子类类型。在向上转型后,如果需要使用子类特有的方法,可以将父类对象强制转换为子类类型。

Animal animal = new Dog("Buddy");
Dog dog = (Dog) animal;
dog.bark();

在上面的例子中,Animal对象被向下转型为Dog类型,以便调用bark()方法。

4.总结

Java中的继承与多态是面向对象编程的基础,通过继承可以实现代码的重用,而多态则使得代码更加灵活和可扩展。掌握继承与多态的概念和使用方法对于Java程序员来说至关重要。