Java继承与重写父类方法调用

在Java中,继承是一种重要的面向对象编程概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。当子类继承父类的方法时,有时我们需要对父类中的方法进行重写,以满足子类的特定需求。在这篇文章中,我们将介绍Java中继承和重写父类方法的概念,并给出一些示例代码来帮助理解。

继承的概念

在Java中,当一个类继承另一个类时,子类会继承父类的属性和方法。继承可以帮助我们重用代码并构建更加灵活的程序结构。在Java中,使用extends关键字来实现继承。下面是一个简单的继承示例:

class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking");
    }
}

在上面的例子中,Dog类继承了Animal类,并新增了一个bark方法。Dog类可以访问Animal类中的eat方法。

重写父类方法

有时子类需要对父类中的方法进行修改或扩展以适应特定需求。这时就需要重写父类的方法。在Java中,通过在子类中定义一个与父类中同名的方法来实现方法重写。下面是一个重写父类方法的示例:

class Animal {
    public void makeSound() {
        System.out.println("Animal is making sound");
    }
}

class Dog extends Animal {
    public void makeSound() {
        System.out.println("Dog is barking");
    }
}

在上面的例子中,Dog类重写了Animal类中的makeSound方法。当调用makeSound方法时,会根据对象的类型输出不同的结果。

示例代码

让我们通过一个完整的示例来演示继承和方法重写的用法。我们定义一个Shape类作为父类,包含一个计算面积的方法,然后定义两个子类CircleRectangle分别重写父类的方法。

class Shape {
    public double calculateArea() {
        return 0;
    }
}

class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}

class Rectangle extends Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    @Override
    public double calculateArea() {
        return length * width;
    }
}

public class Main {
    public static void main(String[] args) {
        Circle circle = new Circle(5);
        Rectangle rectangle = new Rectangle(4, 6);

        System.out.println("Circle area: " + circle.calculateArea());
        System.out.println("Rectangle area: " + rectangle.calculateArea());
    }
}

在上面的示例中,CircleRectangle类分别重写了Shape类中的calculateArea方法,计算了圆形和矩形的面积。在Main类中我们创建了一个圆形对象和一个矩形对象,并调用它们的calculateArea方法。

流程图

让我们用流程图来表示上面的示例代码的执行流程:

flowchart TD
    Start --> CreateCircle
    CreateCircle --> CalculateCircleArea
    CalculateCircleArea --> PrintCircleArea
    Start --> CreateRectangle
    CreateRectangle --> CalculateRectangleArea
    CalculateRectangleArea --> PrintRectangleArea

上面的流程图展示了程序的执行流程,首先创建圆形对象,计算圆形面积,然后打印结果;然后创建矩形对象,计算矩形面积,然后打印结果。

总结

继承和重写父类方法是Java面向对象编程中的重要概念,可以帮助我们构建更加灵