第七周课程总结&实验报告

实验目的

理解抽象类与接口的使用;
了解包的作用,掌握包的设计方法。
实验要求
掌握使用抽象类的方法。
掌握使用系统接口的技术和创建自定义接口的方法。
了解 Java 系统包的结构。
掌握创建自定义包的方法。
实验内容
(一)抽象类的使用
1、设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧

(1) 抽象类定义的方法在具体类要实现;

(2) 使用抽象类的引用变量可引用子类的对象;

(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。

实验代码

package test;

    public abstract class Shape {
        public abstract double area();
    }

    
    
        class Triangle  extends Shape {
        private double a,b,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 double area() {
            double p = (a + b + c);
            return Math.sqrt(p * (p - a) * (p - b) * (p - c));
        }
    }

    
    
        class Rectangle extends Shape {
        public double getWidth() {
            return width;
        }
        public void setWidth(double width) {
            this.width = width;
        }
        public double getHeight() {
            return height;
        }
        public void setHeight(double height) {
            this.height = height;
        }
        private double width, height;
        public Rectangle (double width, double height) {
            this.width = width;
            this.height = height;
        }
        public double area() {
            return width * height;
        }
    }

    
    
        class Circle extends Shape {
        private double r;
        
        
        public double getR() {
            return r;
        }

        public void setR(double r) {
            this.r = r;
        }

        public Circle (double r) {
            this.r = r;
        }
        
        public double area() {
            return Math.PI * r * r;
        }
    }
    


package test;

public class Five {
    public static void main (String args[]) {
        Shape s[] = new Shape[3];
        s[0] = new Triangle(10,20,30); 
        s[1] = new Rectangle(40,50);
        s[2] = new Circle(60);
        
        System.out.println("三角形的面积为:"+s[0].area());
        System.out.println("矩形的面积为:"+s[1].area());
        System.out.println("三角形的面积为:"+s[2].area());
    }
}
知识兔

(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计“直线”、“圆”、类实现Shape接口。分别创建一个“直线”、“圆”对象,将各类图形的大小输出。
2、编程技巧

(1) 接口中定义的方法在实现接口的具体类中要重写实现;

(2) 利用接口类型的变量可引用实现该接口的类创建的对象。

package test;

public interface Shape {
    public double size();
}

class Line implements Shape{
    double x1,x2,y1,y2;
    public Line (double x1, double x2, double y1, double y2) {
        this.x1 = x1; this.x2 = x2;
        this.y1 = y1; this.y2 = y2;
    }
    public double size() {
        return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    }
}

class Circle implements Shape{
    double r;
    public Circle(double r) {
        this.r = r;
    }
    public double size() {
        return Math.PI * r * r;
    }
}



package test;

public class Six {
    public static void main (String args[]) {
        Line l = new Line(10,20,30,40);
        Circle c = new Circle(50);
        System.out.println("直线的长度:"+l.size());
        System.out.println("圆的面积:"+c.size());
    }
}
知识兔
计算机