zoukankan      html  css  js  c++  java
  • 第七周课程总结&实验报告(五)

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

      (一)抽象类的使用

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

      2.编程技巧

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

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

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

      (二)使用接口技术

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

    1. 编程技巧

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

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

        一、实验代码

        

    package 实验五;
    
    public abstract class Shape {
            private double a,b,c;
            public Shape(double a,double b,double c) {
                this.a=a;
                this.b=b;
                this.c=c;
            }
            public Shape(double a,double b) {
                this.a=a;
                this.b=b;
            }
             public Shape(double a) {
                    this.a = a;
            }
            public abstract void print();
            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 class Triangle extends Shape{
         public Triangle(double a,double b,double c) {
                super(a,b,c);
            }
            public double Area() {
                double p=(getA()+getB()+getC())/2;
                double s=Math.sqrt(p*(p-getA())*(p-getB())*(p-getC()));
                return s;
    
            }
            
            public void print(){
                System.out.println("三角形面积:"+this.Area());
    
            }
    
    public class Rectangle extends Shape{
        public Rectangle(double a,double b) {
            super(a,b);
        }
        public double Area() {
            double z = getA()*getB();
            return z;
        }
        
        public void print(){
            System.out.println("矩形面积:"+this.Area());
    
        }
    
    
    public class Circle extends Shape{
        public Circle(double a) {
            super(a);
        }
        public double Area() {
            
            double x=3.14*getA()*getA();
            return x;
    
        }
        
        public void print(){
            System.out.println("圆的面积:"+this.Area());
    
        }
    
    
    import java.util.*;
    public class Test {
    
        public static void main(String[] args) {
            System.out.println("请输入三角形三边长:");
            Scanner out = new Scanner(System.in);
            int a = out.nextInt();
            int b = out.nextInt();
            int c = out.nextInt();
            System.out.println("请输入圆的半径:");
            int d = out.nextInt();
            System.out.println("请输入矩形的宽和高:");
            int e = out.nextInt();
            int f = out.nextInt();
            Triangle tr = new Triangle(a,b,c);
            tr.print();
            Circle cir = new Circle(d);
            cir.print();
            Rectangle rec = new Rectangle(e,f);
            rec.print();
    
        }
    
    }

    实验结果

     二、实验代码

    package jiekou;
    
    public interface Shape {
    
        public void size();
    }
    
    public class Shape1{
        public static Shape getshape(String className,double a) {
            Shape s = null;
            if("Circle".equals(className)) {
                s = new Circle(a);
            }
            if("Line".equals(className)) {
                s = new Line(a);
            }
            
            return s;
        }
    }
    
    
    public class Circle implements Shape{
         private double a;
            public Circle(double a) {
                this.a = a;
            }
    
            public double getA() {
                return a;
            }
    
            public void setA(double a) {
                this.a = a;
            }
    
            public void size() {
                System.out.println("圆的半径:"+a+"    圆的面积:"+(3.14*a*a));
            }
    }
    
    public class Line implements Shape{
         private double a;
            
            public Line(double a) {
                this.a = a;
            }
    
            public double getA() {
                return a;
            }
    
            public void setA(double a) {
                this.a = a;
            }
    
            public void size() {
                System.out.println("直线的长度:"+a);
    
            }
    }
    
    
    import java.util.Scanner;
    public class Test {
    
        public static void main(String[] args) {
            while(true) {
                    System.out.print("
    "+"请输入图形:");
                    Scanner out =new Scanner(System.in);
                    String str = out.nextLine();
                    System.out.print("请输入数据:");
                    int p = out.nextInt();
                    
                    Shape s = null;
                    s = Shape1.getshape(str,p);
    
                    }
                }
    }

    结果

     学习总结

    本周老师讲了抽象类与接口之间的关系

    区别点 抽象类 接口
    定义 包含一个抽象方法的类 抽象方法和全局常量的集合
    组成 构造方法、抽象方法、普通方法、常量、变量 常量、抽象方法
    使用 子类继承抽象类(extends) 子类实现接口(implements)
    关系 抽象类可以实现多个接口 接口不能继承抽象类,但允许继承多个接口
    常见设计模式 模板设计 工厂设计、代理设计
    局限 抽象类有单继承的局限 接口没有继承的局限
    实际 作为一个模板 是作为一个标准或是标是一种能力

     对象:都通过对象的多态性产生实例化对象;选择:如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限;特殊:一个抽象类中可以包含多个接口,一个接口中包含多个抽象类;

    还讲了object类是所有类的老祖宗;以及异常的捕获和处理;

  • 相关阅读:
    异常处理与调试2
    异常处理与调试
    异常处理与调试
    身份证校验程序(下)- 零基础入门学习Delphi49
    身份证校验程序(下)- 零基础入门学习Delphi49
    身份证校验程序(上)- 零基础入门学习Delphi48
    身份证校验程序(上)- 零基础入门学习Delphi48
    python -- 面向对象三大特性
    python -- 面向对象初识
    python成长之路八 -- 内置函数
  • 原文地址:https://www.cnblogs.com/liuz98/p/11663964.html
Copyright © 2011-2022 走看看