【实践训练】 1. 定义抽象类 Shape,其中包含抽象方法 double getPeremeterO求周长和 double getArea0求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法,定义一个方法 一次直接显示长和宽、周长和面积。 定义一个测试类,测试矩形类。 2. 定义一个接口 CompareObject,具有方法 compareTo0用于比较两个对象。 定义一个类 Position 从 CompareObject 派生而来,有x和y属性表示其坐标, 该类实现 compare To0方法,用于比较两个对象距离原点(0,0)的距离。 定义测试类测试 Position 类的 compareTo0方法。
时间: 2023-12-06 18:45:09 浏览: 87
Java:使用抽象类定义一个“形状类”,能够计算周长和面积。
1.
```
// Shape.java
public abstract class Shape {
public abstract double getPerimeter();
public abstract double getArea();
}
// Rectangle.java
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public void display() {
System.out.println("Length: " + length);
System.out.println("Width: " + width);
System.out.println("Perimeter: " + getPerimeter());
System.out.println("Area: " + getArea());
}
@Override
public double getPerimeter() {
return 2 * (length + width);
}
@Override
public double getArea() {
return length * width;
}
}
// Test.java
public class Test {
public static void main(String[] args) {
Rectangle rect = new Rectangle(5, 10);
rect.display();
}
}
```
2.
```
// CompareObject.java
public interface CompareObject {
public int compareTo(Object o);
}
// Position.java
public class Position implements CompareObject {
private int x;
private int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public int compareTo(Object o) {
Position other = (Position) o;
double distance1 = Math.sqrt(x * x + y * y);
double distance2 = Math.sqrt(other.x * other.x + other.y * other.y);
if (distance1 < distance2) {
return -1;
} else if (distance1 > distance2) {
return 1;
} else {
return 0;
}
}
}
// Test.java
public class Test {
public static void main(String[] args) {
Position p1 = new Position(3, 4);
Position p2 = new Position(5, 12);
int result = p1.compareTo(p2);
if (result < 0) {
System.out.println("p1 is closer to the origin.");
} else if (result > 0) {
System.out.println("p2 is closer to the origin.");
} else {
System.out.println("p1 and p2 are equidistant from the origin.");
}
}
}
```
阅读全文