zoukankan      html  css  js  c++  java
  • 第七周实验报告与总结5

    一.抽象类的使用

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

    2.编程技巧

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

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

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

    (二)使用接口技术

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

    编程技巧

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

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

    代码1:

    package chouxianglei;

    abstract class shape {
        public abstract double print();  
    }
    class sanjiao extends shape {
        private double a;
        private double b;
        private double c; public sanjiao(double a,double b,double c){
            this.a=a;
            this.b=b;
            this.c=c;             
        }
        public double print() {
            double p=(a+b+c)/2;
            return  Math.sqrt(p*(p-a)*(p-b)*(p-c));
        }
    }
    class juxing extends shape {
        private double width;
        private double height;
        public juxing(double width, double height){
            this.height=height;
            this.width=width;   
        }
        public double print() {     
            return width*height; 
        }
    }
    class yuan extends shape {
        double radious;    
        public yuan(double radious){ 
            this.radious=radious; 
        }
        public double print() {    
            return Math.PI*radious*radious;
        }
    }
    public class chouxianglei {
        public static void main(String[] args){
            shape s1=new sanjiao(3,4,5);
            shape s2=new juxing(5,8);
            shape s3=new yuan(6);    
            System.out.println("三角形的面积为: "+s1.print());
            System.out.println("矩形的面积为: "+s2.print());
            System.out.println("圆的面积为: "+s3.print());    
        }
    }

    实验截图:

    二)使用接口技术

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

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

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

    代码2:

    interface shape {
        public void size();
    }

    class Cricle implements shape {

        public double redius;

        public Cricle(double redius) {
            this.redius = redius;
        }

        public double getRedius() {
            return redius;
        }

        public void setRedius(double redius) {
            this.redius = redius;
        }

        public double SSS() {
            double s = Math.pow(redius, 2) * 3.14;
            return s;
        }

        public void size() {
            System.out.println("圆的大小为" + SSS());
        }

    }


    class zhixian implements shape {
        public double h;

        public zhixian(double h) {
            this.h = h;
        }

        public double getH() {
            return h;
        }

        public void setH(double h) {
            this.h = h;
        }

        public double S() {
            double s = h;
            return s;
        }

        public void size() {
            System.out.println("直线的大小为" + S());
        }

    }

    public class test {

        public static void main(String[] args) {
            shape str1 = new Cricle(10);
            shape str2 = new zhixian(10);
            str1.size();
            str2.size();
        }

    }

    截图2:

    学习总结:

    1.抽象类和接口都不能直接实例化,

    2.抽象类必须通过对象的多态性进行实例化操作,且抽象类要被子类继承,接口要被类实现。

    3.抽象类中的变量是普通变量,接口里定义的变量只能是公共的静态的常量。

    4.抽象方法要被实现,不能是静态的,不能是私有的。

    5.接口可继承接口,而且可以多继承接口,但类只能单根继承。

  • 相关阅读:
    c.vim
    Ubuntu18.04重装指南
    [TJOI2017]城市 【树的直径+暴力+优化】
    [Bzoj3696]化合物【暴力+树形Dp】
    [JLOI2015]战争调度【暴力+树形Dp】
    [Bzoj3743][Coci2015] Kamp【换根Dp】
    [POI2017]Sabota【观察+树形Dp】
    [CQOI2009]叶子的染色【性质+树形Dp】
    COCI2014/2015 Contest#1 D MAFIJA【基环树最大独立点集】
    [牛客网] 推箱子【离散,线段树区间覆盖】
  • 原文地址:https://www.cnblogs.com/gyyy/p/11663740.html
Copyright © 2011-2022 走看看