1. 假设有一个抽象类Shape2D定义如下: public abstract class Shape2D { public abstract double calcArea(); public Shape2D(){} public Shape2D(String name){ System.out.println(name+" Shape Created"); } public String toString(){ return "This is Shape"; } } 定义Shape2D类的子类Circle,Rectangle,实现抽象方法calcArea。测试类定义如下,运行程序,记录输出结果。 public class Sy12_1 { public static void main(String[] args) { Shape2D s1 = new Circle("圆形",32.5f); Shape2D s2 = new Rectangle("矩形",3,5); System.out.println(s1.calcArea()); System.out.println(s2.calcArea()); } }
时间: 2024-01-12 16:03:00 浏览: 75
下面是完整的代码:
```
public abstract class Shape2D {
public abstract double calcArea();
public Shape2D(){}
public Shape2D(String name){
System.out.println(name+" Shape Created");
}
public String toString(){
return "This is Shape";
}
}
class Circle extends Shape2D {
float radius;
public Circle(String name, float radius) {
super(name);
this.radius = radius;
}
public double calcArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape2D {
float length, width;
public Rectangle(String name, float length, float width) {
super(name);
this.length = length;
this.width = width;
}
public double calcArea() {
return length * width;
}
}
public class Sy12_1 {
public static void main(String[] args) {
Shape2D s1 = new Circle("圆形", 32.5f);
Shape2D s2 = new Rectangle("矩形", 3, 5);
System.out.println(s1.calcArea());
System.out.println(s2.calcArea());
}
}
```
在这段代码中,我们定义了一个抽象类`Shape2D`,并在其中定义了一个抽象方法`calcArea()`,用于计算形状的面积。`Shape2D`还有两个构造函数,其中一个带有一个字符串参数`name`,用于输出形状的名称。另一个构造函数为空,没有参数。
然后我们定义了两个类,`Circle`和`Rectangle`,它们分别继承了`Shape2D`类,并实现了`calcArea()`方法。`Circle`类有一个私有属性`radius`,表示圆的半径;`Rectangle`类有两个私有属性`length`和`width`,表示矩形的长和宽。这两个类中的构造函数都调用了父类的构造函数,并将传入的参数赋给自己的私有属性。`calcArea()`方法分别用于计算圆和矩形的面积。
在测试类`Sy12_1`中,我们创建了一个`Circle`对象`s1`和一个`Rectangle`对象`s2`,并分别调用了它们的`calcArea()`方法,输出了圆和矩形的面积。
阅读全文