一、实验目的
1. 掌握 Java 语言的类和对象的定义及使用的基本方法。
2. 掌握继承机制以及子类和父类之间的转换。
3. 掌握多态性的概念及程序设计。
二、实验内容
上机实现下列程序并观察程序的运行情况:
1. 声明一个表示圆的类,包含计算周长和面积的方法,保存在文件 Circle.java 中。然后编写测试类,保存在文件 ShapeTester.java 中,并与 Circle.java 放在相同 的目录下,进行测试。
2. 定义一个抽象类 Shape,它有一个抽象方法 calArea 代表求图形的面积; 分别定义 Shape 的两个子类 Triangle、Rectangle 代表三角形、矩形,这两个类分 别具体实现 calArea 方法求自己的面积,在 main 方法里,利用这三个类创建对象 展示 Java 的多态性。
1.Circle.java
public class Circle {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double perimeter() {
return 2 * Math.PI * radius;
}
public double Area() {
return Math.PI * radius * radius;
}
}
2.ShapeTester.java
import java.util.*;
public class ShapeTester {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入圆的半径");
int n = scanner.nextInt();
Circle circle = new Circle(n);
double circumference = circle.perimeter();
double area = circle.Area();
System.out.println("周长: " + circumference);
System.out.println("面积: " + area);
}
}
3.Shape.java
import java.util.*;
public abstract class Shape {
abstract double calArea();
}
class Triangle extends Shape {
private double base,height;
Triangle(double base, double height) {
this.base = base;
this.height = height;
}
@Override
double calArea() {
return 0.5 * base * height;
}
}
class Rectangle extends Shape {
private double width,height;
Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double calArea() {
return width * height;
}
}
class Main {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("输入三角形直角边:");
double a = scanner.nextInt();
double b = scanner.nextInt();
System.out.println("输入矩形两条边:");
double c = scanner.nextInt();
double d = scanner.nextInt();
Shape shape1 = new Triangle(a, b);
Shape shape2 = new Rectangle(c, d);
System.out.println("三角形的面积: " + shape1.calArea());
System.out.println("矩形的面积: " + shape2.calArea());
}
}