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
类作为父类,包含一个计算面积的方法,然后定义两个子类Circle
和Rectangle
分别重写父类的方法。
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());
}
}
在上面的示例中,Circle
和Rectangle
类分别重写了Shape
类中的calculateArea
方法,计算了圆形和矩形的面积。在Main
类中我们创建了一个圆形对象和一个矩形对象,并调用它们的calculateArea
方法。
流程图
让我们用流程图来表示上面的示例代码的执行流程:
flowchart TD
Start --> CreateCircle
CreateCircle --> CalculateCircleArea
CalculateCircleArea --> PrintCircleArea
Start --> CreateRectangle
CreateRectangle --> CalculateRectangleArea
CalculateRectangleArea --> PrintRectangleArea
上面的流程图展示了程序的执行流程,首先创建圆形对象,计算圆形面积,然后打印结果;然后创建矩形对象,计算矩形面积,然后打印结果。
总结
继承和重写父类方法是Java面向对象编程中的重要概念,可以帮助我们构建更加灵