在java中,定义一个父类和一个子类,定义两个方法,在子类中定义一个方法覆盖(要求有形参)并分别使用父类和子类生成一个对象,调用该方法
时间: 2024-10-15 13:29:06 浏览: 22
Java中父类怎么调用子类的方法
在Java中,当你有一个父类(也称为超类)和一个子类,你可以通过方法重写(Override)来实现子类对父类方法的具体化。假设我们有一个`Shape`父类,它有一个打印形状信息的`printShape()`方法。然后创建一个`Circle`子类,这个子类覆盖了`Shape`的`printShape()`方法,并添加了一个额外的圆周率参数。
```java
// 定义父类 Shape
public class Shape {
public void printShape() {
System.out.println("这是一个抽象的形状");
}
}
// 子类 Circle 继承自 Shape 并重写 printShape() 方法
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
// 覆盖父类的 printShape() 方法,增加形参
@Override
public void printShape(double pi) {
System.out.println("这是一个圆形,半径为 " + radius + ",圆周率为 " + pi);
}
}
// 创建父类和子类的对象并调用相应的方法
public class Main {
public static void main(String[] args) {
// 父类Shape对象
Shape shape = new Shape();
shape.printShape(); // 输出:"这是一个抽象的形状"
// 子类Circle对象
Circle circle = new Circle(5.0); // 假设圆的半径为5.0
circle.printShape(Math.PI); // 输出:"这是一个圆形,半径为 5.0,圆周率为 3.141592653589793"
}
}
```
在这个例子中,虽然我们在`main`方法中使用的是`circle`子类对象,但由于我们调用了`circle.printShape(Math.PI)`,实际上执行的是子类中重写过的`printShape(double pi)`方法,体现了多态性。这就是在Java中如何利用子类覆盖父类方法并结合多态调用它们的一个示例。
阅读全文