2.程序功能:自定义抽象类Shape形状类,并实现了该抽象类的具体子类 Square正方形类。 public class Shape { private abstract double perimeter (); public abstract double area(){}; / Error4 // Error5 // Error6 class Square extends Shape { double edge; public Square (double e) { this. edge = e; ? public double perimeter)
时间: 2024-03-08 20:46:09 浏览: 46
这段代码中有一些错误,需要进行修正:
1. 第2行的`perimeter()`方法应该是一个抽象方法,而不是一个私有方法。
2. 第3行的`area()`方法需要加上返回值类型`double`。
3. 第6行缺少一个左大括号`{`。
4. 第8行的`perimeter`方法需要实现,应该返回正方形的周长。
5. 第11行的`area`方法需要实现,应该返回正方形的面积。
6. 第12行缺少一个右大括号`}`。
修正后的代码如下:
```
public abstract class Shape {
public abstract double perimeter();
public abstract double area();
}
class Square extends Shape {
double edge;
public Square(double e) {
this.edge = e;
}
public double perimeter() {
return edge * 4;
}
public double area() {
return edge * edge;
}
}
```
相关问题
用JAVA语言写一个程序完成下面5项内容,并写好注释 1.请构造一个抽象类Shape,拥有抽象方法计算面积方法calcSquare和计算周长方法calcCircumference 2.请完成圆形、正方形、三角形、长方形对应的类,并继承自抽象类Shape,并实现抽象方法。 3.请将各个图形必要的参数(如边长、高、半径),以构造方法的形式传入(类型为double),并且保存到相应的属性。 4.实现一个Main方法,生成类的实例并且打印出各种形状的面积和周长。要求以 Shape xxx= new Circle()这种多态的方式调用 5.请注意,正方形是长方形的子类!
解答如下:
```
// 1. 抽象类 Shape
abstract class Shape {
// 计算面积方法,抽象方法
abstract double calcSquare();
// 计算周长方法,抽象方法
abstract double calcCircumference();
}
// 2. 各个形状的类,并继承自 Shape 抽象类,并实现抽象方法
class Circle extends Shape {
// 半径
private double radius;
// 构造方法
public Circle(double radius) {
this.radius = radius;
}
// 计算面积方法
public double calcSquare() {
return Math.PI * radius * radius;
}
// 计算周长方法
public double calcCircumference() {
return 2 * Math.PI * radius;
}
}
class Square extends Rectangle {
// 边长
private double side;
// 构造方法
public Square(double side) {
super(side, side);
this.side = side;
}
}
class Triangle extends Shape {
// 底边长
private double bottom;
// 高
private double height;
// 构造方法
public Triangle(double bottom, double height) {
this.bottom = bottom;
this.height = height;
}
// 计算面积方法
public double calcSquare() {
return bottom * height / 2;
}
// 计算周长方法
public double calcCircumference() {
double side = Math.sqrt(bottom * bottom + height * height);
return bottom + 2 * side;
}
}
class Rectangle extends Shape {
// 长
private double length;
// 宽
private double width;
// 构造方法
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// 计算面积方法
public double calcSquare() {
return length * width;
}
// 计算周长方法
public double calcCircumference() {
return 2 * (length + width);
}
}
// 4. 实现一个Main方法
public class Main {
public static void main(String[] args) {
// 生成类的实例并且打印出各种形状的面积和周长
Shape circle = new Circle(3);
Shape square = new Square(4);
Shape triangle = new Triangle(3, 4);
Shape rectangle = new Rectangle(2, 5);
System.out.println("Circle: ");
System.out.println("Area = " + circle.calcSquare());
System.out.println("Circumference = " + circle.calcCircumference());
System.out.println("Square: ");
System.out.println("Area = " + square.calcSquare());
System.out.println("Circumference = " + square.calcCircumference());
System.out.println("Triangle: ");
System.out.println("Area = " + triangle.calcSquare());
System.out.println("Circumference = " + triangle.calcCircumference());
System.out.println("Rectangle: ");
System.out.println("Area = " + rectangle.calcSquare());
System.out.println("Circumference = " + rectangle.calcCircumference());
}
}
// 5. 注意正方形是长方形的子类
```
注释如下:
1. 定义抽象类 Shape
- 抽象方法 calcSquare() 计算面积
- 抽象方法 calcCircumference() 计算周长
2. 定义 Circle、Square、Triangle、Rectangle 等类表示不同的形状,并继承自 Shape 抽象类,实现其抽象方法
- 具体实现方式根据各种形状的特点决定
3. 在各个形状的类中使用构造方法将必要的参数(如边长、高、半径)传入,并保存到相应的属性中
4. 在 Main 方法中生成各个形状的实例,使用多态的方式调用其 calcSquare() 和 calcCircumference() 方法,计算出面积和周长,并打印输出
5. 注意正方形是长方形的子类,故在 Square 类中只需要传入边长参数即可,而不是传入 length 和 width 参数。
编写一个应用抽象类的程序要求设计抽象类设计继承抽象类并实现抽象类中抽象方法的子类
为了应用抽象类,我们可以设计一个图形类和一个动物类作为例子。首先,我们需要设计一个抽象类图形类,其中包含有至少两个抽象方法求周长和求面积。然后,我们可以定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法。代码如下:
```java
// 抽象类图形类
abstract class Shape {
// 抽象方法求周长
public abstract double getPerimeter();
// 抽象方法求面积
public abstract double getArea();
}
// 圆形类
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
// 实现求周长方法
public double getPerimeter() {
return 2 * Math.PI * radius;
}
// 实现求面积方法
public double getArea() {
return Math.PI * radius * radius;
}
}
// 长方形类
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// 实现求周长方法
public double getPerimeter() {
return 2 * (length + width);
}
// 实现求面积方法
public double getArea() {
return length * width;
}
}
// 正方形类
class Square extends Rectangle {
public Square(double side) {
super(side, side);
}
}
// 三角形类
class Triangle extends Shape {
private double a;
private double b;
private double c;
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
// 实现求周长方法
public double getPerimeter() {
return a + b + c;
}
// 实现求面积方法
public double getArea() {
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
}
// 抽象类动物类
abstract class Animal {
// 抽象方法捕食
public abstract void hunt();
// 非抽象方法进食
public void eat() {
hunt();
System.out.println("进食中...");
}
}
// 狮子类
class Lion extends Animal {
// 实现捕食方法
public void hunt() {
System.out.println("狮子正在捕猎...");
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 测试图形类
Shape circle = new Circle(5);
System.out.println("圆形的周长为:" + circle.getPerimeter());
System.out.println("圆形的面积为:" + circle.getArea());
Shape rectangle = new Rectangle(3, 4);
System.out.println("长方形的周长为:" + rectangle.getPerimeter());
System.out.println("长方形的面积为:" + rectangle.getArea());
Shape square = new Square(5);
System.out.println("正方形的周长为:" + square.getPerimeter());
System.out.println("正方形的面积为:" + square.getArea());
Shape triangle = new Triangle(3, 4, 5);
System.out.println("三角形的周长为:" + triangle.getPerimeter());
System.out.println("三角形的面积为:" + triangle.getArea());
// 测试动物类
Animal lion = new Lion();
lion.eat();
}
}
```
阅读全文