1、在com.atguigu.test08包中声明图形Graphic、圆Circle、矩形Rectangle类、三角形Triangle类 2、图形Graphic类中有: ①public double getArea()方法:返回面积 ②public double getPerimeter()方法:返回周长 ③public String getInfo()方法:返回图形信息 3、圆类和矩形类重写这两个方法 4、在com.atguigu.test08包中声明测试类Test08_1 (1)请设计一个方法,可以用于比较两个图形的面积是否相等 (2)请设计一个方法,可以用于找出两个图形中面积大的那个 (3)public static void main(String[] args){} 在主方法中,创建1个圆、1个矩形、1个三角形对象,并分别调用(1)、(2)方法进行测试。 5、在com.atguigu.test08包中测试类Test08_2 (1)请设计一个方法,可以用于遍历一个图形数组 (2)请设计一个方法,可以用于给一个图形数组进行按照面积从小到大排序 (3)public static void main(String[] args){} 在主方法中,创建1个圆、1个矩形、1个三角形对象,放到数组中,遍历显示,然后排序后再遍历显示。
时间: 2024-02-09 10:10:19 浏览: 24
以下是符合题目要求的Java代码:
Graphic类:
```java
package com.atguigu.test08;
public class Graphic {
public double getArea() {
return 0;
}
public double getPerimeter() {
return 0;
}
public String getInfo() {
return "This is a graphic.";
}
}
```
Circle类:
```java
package com.atguigu.test08;
public class Circle extends Graphic {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public String getInfo() {
return "This is a circle with radius " + radius + ".";
}
}
```
Rectangle类:
```java
package com.atguigu.test08;
public class Rectangle extends Graphic {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
@Override
public String getInfo() {
return "This is a rectangle with width " + width + " and height " + height + ".";
}
}
```
Triangle类:
```java
package com.atguigu.test08;
public class Triangle extends Graphic {
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;
}
@Override
public double getArea() {
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
@Override
public double getPerimeter() {
return a + b + c;
}
@Override
public String getInfo() {
return "This is a triangle with sides " + a + ", " + b + ", and " + c + ".";
}
}
```
Test08_1类:
```java
package com.atguigu.test08;
public class Test08_1 {
public static boolean compareArea(Graphic g1, Graphic g2) {
return g1.getArea() == g2.getArea();
}
public static Graphic getMaxArea(Graphic g1, Graphic g2) {
return g1.getArea() >= g2.getArea() ? g1 : g2;
}
public static void main(String[] args) {
Circle c = new Circle(5);
Rectangle r = new Rectangle(6, 7);
Triangle t = new Triangle(3, 4, 5);
System.out.println("Area comparison result: " + compareArea(c, r)); // false
System.out.println("Max area object: " + getMaxArea(r, t).getInfo()); // This is a rectangle with width 6.0 and height 7.0.
}
}
```
Test08_2类:
```java
package com.atguigu.test08;
import java.util.Arrays;
public class Test08_2 {
public static void traverse(Graphic[] arr) {
for (Graphic g : arr) {
System.out.println(g.getInfo());
}
}
public static void sortByArea(Graphic[] arr) {
Arrays.sort(arr, (g1, g2) -> Double.compare(g1.getArea(), g2.getArea()));
}
public static void main(String[] args) {
Circle c = new Circle(5);
Rectangle r = new Rectangle(6, 7);
Triangle t = new Triangle(3, 4, 5);
Graphic[] arr = new Graphic[] {c, r, t};
traverse(arr);
sortByArea(arr);
traverse(arr);
}
}
```
在Test08_2类中,sortByArea方法使用了Java 8引入的Lambda表达式来实现Comparator接口的compare方法,这样可以更简洁地实现比较逻辑。如果您不熟悉Lambda表达式,也可以使用传统的匿名内部类来实现。