实验七
接口与包
实验目的
1.理解并初步掌握接口的概念及编写
2.初步掌握包的使用;
实验内容与要求
1.前述实验中为类Triangle、Rectangale、Circle引入了一个共同的父类--GeometricObject类,其实Point和Line也应该是Geometricobject的子类,只不过这样一来GeometricObject类中就不应该再包含求周长和面积的方法了。可以考虑用一个接口来描述这两个方法,让类Triangle、Rectangale、Circle来实现这个接口。
2.写出上述接口并重写前述类以适合新的类设计。与前述的继承体系相比,总结使用接口的好处。
3.将上述每个类放至每个不同的文件中,让它们属于同一个包(比如exercise.graphics) ,从中体会包的好处。
代码实现
1. package Demo3;
public class Circle implements function {
static double PI = 3.14159265;
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public double area() {//面积
return PI * radius * radius;
}
@Override
public double perimeter() {//周长
return 2 * PI * radius;
}
}
2. package Demo3;
public class Rectangle implements function {
private double lenth;
private double width;
public Rectangle() {
}
public Rectangle(double lenth, double width) {
this.lenth = lenth;
this.width = width;
}
public double getLenth() {
return lenth;
}
public void setLenth(double lenth) {
this.lenth = lenth;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
@Override
public double area() {
return lenth * width;
}
@Override
public double perimeter() {
return (lenth + width) * 2;
}
}
3. package Demo3;
public class Triangle implements function {
private double a;//各边边长
private double b;
private double c;
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public Triangle() {
}
@Override
public double perimeter() {//周长
return a + b + c;
}
@Override
public double area() {//海伦公式求面积
double p = perimeter()/2;
return Math.sqrt(p * (p-a) * (p-b) * (p-c));
}
}
4. package Demo3;
public interface function {
public abstract double area();
public abstract double perimeter();
}
5. package Demo3;
public class Test1 {
public static void main(String[] args) {
// Triangle t = new Triangle(4,3,5);
// System.out.println(t.area());
System.out.println("测试开始:");
Rectangle t1 = new Rectangle(2,5);
System.out.println("矩形周长是:"+t1.perimeter());
System.out.println("矩形面积是:"+t1.area());
Circle t2 = new Circle(2);
System.out.println("圆周长是:"+t2.perimeter());
System.out.println("圆面积是:"+t2.area());
Triangle t3 = new Triangle(3,4,5);
System.out.println("三角形周长是:"+t3.perimeter());
System.out.println("三角形面积是:"+t3.area());
}
}

289

被折叠的 条评论
为什么被折叠?



