• 第七周课程总结&实验报告(五)


    实验四 类的继承

    实验目的

    理解抽象类与接口的使用;
    了解包的作用,掌握包的设计方法。
    实验要求
    掌握使用抽象类的方法。
    掌握使用系统接口的技术和创建自定义接口的方法。
    了解 Java 系统包的结构。
    掌握创建自定义包的方法。

    实验内容

    (一)抽象类的使用

    设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
    注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
    2.编程技巧

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

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

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

    1.实验源码
    import static java.lang.StrictMath.sqrt;
    
    abstract class shape{
        private String shape;
        private double area;
    
        public String getShape() {
            return shape;
        }
    
        public void setShape(String shape) {
            this.shape = shape;
        }
    
        public double getArea() {
            return area;
        }
    
        public void setArea(double area) {
            this.area = area;
        }
    
    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;
        }
    
        triangle(double a, double b, double c) {
            this.a=a;
            this.b=b;
            this.c=c;
        }
        public double area() {
            double p;
            double s;
            p=(this.a+this.b+this.c)/2;
            s=sqrt(p*(p-a)*(p-b)*(p-c));
            return s;
    
        }
    }   
    class rectangle extends shape{  //长:L(l)高:H(h)
        private double l,h;
    
        public double getH() {
            return h;
        }
    
        public void setH(double h) {
            this.h = h;
        }
    
        public double getL() {
            return l;
        }
    
        public void setL(double l) {
            this.l = l;
        }
        rectangle(double l,double h){
            this.h=h;
            this.l=l;
        }
        @Override
        public double area() {
            double s1;
            s1=this.h*this.l;
            return s1;
        }
    }
    class circle extends shape{
        private double r;
    
        public double getR() {
            return r;
        }
    
        public void setR(double r) {
            this.r = r;
        }
        circle(double r){
            this.r=r;
        }
        @Override
        public double area() {
            double s2;
            s2= Math.PI*r*r;
            return s2;
        }
    }
    class shape1{
        public static void main(String[] args) {
            shape triangle = new triangle(7,8,9);
            System.out.println("三角形的面积为:"+triangle.area());
            shape rectangle = new rectangle(10,20);
            System.out.println("矩形的面积为:"+rectangle.area());
            shape circle = new circle(5);
            System.out.println("圆形的面积为:"+circle.area());
        }
    }
    
    2.实验结果截图

    3.实验过程

    听过老师上课所讲的这个题目并不难。圆周率:Math.PI

    (二)使用接口技术

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

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

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

    1.实验源码
    interface Shape1{
        public double size();
    }
    class straight implements Shape1 {
        private double l;
        straight(double l){
            this.l=l;
        }
    
        @Override
        public double size() {
            return this.l;
        }
    }
    class circle1 implements Shape1{
        private double r;
        circle1(double r){
            this.r=r;
        }
        @Override
        public double size() {
            double area;
            area=Math.PI*r*r;
            return area;
        }
    }
    class size1{
        public static void main(String[] args) {
            Shape1 straight = new straight(25);
            System.out.println("直线的长度为:"+straight.size());
            Shape1 circle1 = new circle1(3);
            System.out.println("圆的面积为:"+circle1.size());
        }
    }
    
    2.实验结果截图

    3.实验过程

    跟着书上的198页的代理操作来写的

    本周总结

    1.学习了抽象类:
    (1)抽象类里面可以有普通方法,以及抽象类是不能直接实定化;
    (2)抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法
    (3)定义格式:

    abstract class 抽象类名称{
        属性;
        访问权限  返回值类型  方法名称(参数){
        return 返回值;
        }
        访问权限 abstract 返回值类型 方法名称(参数);
    }
    

    2.学习了接口:
    (1)接口一般只有方法声明没有定义
    (2)接口没有方法体,只能通过一个具体的类去实现其中的方法体
    (3)定义格式:

    interface 接口名称{
        全局常量;
        抽象方法;
    }
    

    二者之间的选择:两种都可以使用的情况下,优先使用接口,因为避免单接口的局限性
    特殊:一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类

    关于自己 :看视频的进度稍微提快了点,希望自己可以利用起碎片时间,将视频进度赶上来

  • 相关阅读:
    vivim (十一):文本重排
    vivim (十):接出(复制)
    python的函数
    从oracle11g向oracle9i导数据遇到的一些问题
    vivim (十二):中介字元正则表达式
    DataList如何实现横向排列数据交替行变色!
    跳出率对百度排名的影响越来越大
    asp.net 服务器端控件使用服务器端变量
    .net .用户控件和页面的加载顺序、生命周期
    网站如何让被DOMZ收录
  • 原文地址:https://www.cnblogs.com/muxixixixi/p/11654955.html
Copyright © 2020-2023  润新知