定义一个正方形Square类,继承抽象类上题的Shape类,重写抽象类shape中的两个抽象方法。写出该类成员变量的定义,写出该类的无参的构造方法和有参的构造方法
时间: 2024-11-12 13:46:17 浏览: 6
声明一个图形基类并在它的基础上派生出其他类并编写程序实现各类的定义及实现
在面向对象编程中,我们可以定义一个`Square`类,它是一个具体的形状类,继承自抽象类`Shape`,并实现了其中的两个抽象方法。首先,我们需要创建一个名为`Shape`的抽象基类,包含抽象方法。然后,`Square`类将会有自己的属性,如边长,以及用于设置和获取这些属性的构造函数。
```java
// 定义抽象基类 Shape
abstract class Shape {
// 抽象方法,需要在每个子类中实现
abstract double getArea();
abstract double getPerimeter();
}
// Square 类定义
class Square extends Shape {
// 成员变量 - 正方形的边长
private double side;
// 无参构造方法
public Square() {
this.side = 0; // 初始边长可以设为0,实际应用中可能需要其他默认值
}
// 有参构造方法,接收边长作为参数
public Square(double sideLength) {
if (sideLength > 0) { // 验证边长是否合法
this.side = sideLength;
} else {
throw new IllegalArgumentException("Side length must be positive.");
}
}
// 重写抽象方法
@Override
public double getArea() {
return Math.pow(side, 2);
}
@Override
public double getPerimeter() {
return 4 * side;
}
}
```
在这个例子中,`Square`类有成员变量`side`表示边长,并有两个构造方法:一个是无参的,主要用于初始化;另一个是有参的,接收边长作为输入,并设置了合理的边长范围检查。
阅读全文