定义一个正方形Square类,继承抽象类上题的Shape类,重写抽象类shape中的两个抽象方法。写出该类成员变量的定义,写出该类的无参的构造方法和有参的构造方法
时间: 2024-11-12 11:46:17 浏览: 47
在面向对象编程中,我们可以定义一个`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`表示边长,并有两个构造方法:一个是无参的,主要用于初始化;另一个是有参的,接收边长作为输入,并设置了合理的边长范围检查。
阅读全文