定义一个名为Square类表示正方形,使其继承Shape抽象类,覆盖Shape类中的抽象方法getPerimeter( )和getArea( )。编写程序测试Square类的使用。要创建两个Java吗
时间: 2024-10-29 19:11:26 浏览: 24
Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)
在Java中,你可以定义一个名为`Square`的类,它会继承自一个叫做`Shape`的抽象类,并覆盖`Shape`中的抽象方法`getPerimeter()`和`getArea()`. `Shape`抽象类可能包含一个或多个抽象方法,如果没有提供具体的实现,那么使用该类的实例需要通过其子类来完成。
首先,让我们定义`Shape`抽象类:
```java
// Shape抽象类
public abstract class Shape {
public abstract double getPerimeter(); // 获取周长
public abstract double getArea(); // 获取面积
}
```
然后,我们定义`Square`类作为`Shape`的子类并覆盖这两个方法:
```java
// Square类
public class Square extends Shape {
private double side; // 正方形的边长
public Square(double side) {
this.side = side;
}
@Override
public double getPerimeter() {
return 4 * side;
}
@Override
public double getArea() {
return side * side;
}
}
```
接下来,我们可以创建`Square`对象并测试它们的方法:
```java
public class Main {
public static void main(String[] args) {
Square square1 = new Square(5);
System.out.println("Square 1 perimeter: " + square1.getPerimeter());
System.out.println("Square 1 area: " + square1.getArea());
Square square2 = new Square(10);
System.out.println("Square 2 perimeter: " + square2.getPerimeter());
System.out.println("Square 2 area: " + square2.getArea());
}
}
```
在这个例子中,`Square`类通过覆盖`Shape`的抽象方法展示了多态性,即不同的`Square`实例可以有不同的行为,尽管它们都是`Shape`类型的引用。
阅读全文