第七周总结&第五次实验报告

孤街浪徒 提交于 2019-12-01 04:30:55

实验五 类的继承

一、 实验目的

  • (1) 理解抽象类与接口的使用;
  • (2) 了解包的作用,掌握包的设计方法。

    二、 实验要求

  • (1) 掌握使用抽象类的方法。
  • (2) 掌握使用系统接口的技术和创建自定义接口的方法。
  • (3) 了解 Java 系统包的结构。
  • (4) 掌握创建自定义包的方法。

三、 实验内容

(一)抽象类的使用

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

    实验过程

package demo1;

public abstract class Xingzhuang {
    public abstract double area();

}

package demo1;

public class Delta extends Xingzhuang {
    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 Delta(double a,double b,double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }


    public double area() {
        double p;
        p = (this.a + this.b + this.c)/2;
        
        return Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }

}

package demo1;

public class Rectangle extends Xingzhuang {

    private double length, high;
    public double getLength() {
        return length;
    }
    public void setLength(double length) {
        this.length = length;
    }
    public double getHeight() {
        return high;
    }
    public void setHeight(double height) {
        this.high = height;
    }
    public Rectangle(double length, double high) {
        this.high = high;
        this.length = length;
    }
    public double area() {
        return this.high * this.length;
    }

}

package demo1;

public class Circle extends Xingzhuang {

    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 * Math.pow(this.r, 2);
    }

}

package demo1;

public class Test {

    public static void main(String[] args) {
        Xingzhuang san = new Delta(3,4,5);
        System.out.println("三角形面积为:"san.area());
        Xingzhuang ju = new Rectangle(4,5);
        System.out.println("矩形面积:"ju.area());
        Xingzhuang circle = new Circle(6);
        System.out.println("圆的面积为:"circle.area());

    }

}

实验结果

2.编程技巧

  • (1) 抽象类定义的方法在具体类要实现;
  • (2) 使用抽象类的引用变量可引用子类的对象;
  • (3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。

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

实验过程

package demo2;

public interface Shape {
    public double size();
    

}


package demo2;

public class Steep implements Shape {

    private double length;
    public double getLength() {
        return length;
    }
    public void setLength(double length) {
        this.length = length;
    }
    public Steep(double length) {
        this.length = length;
    }
    public Steep() {
        
    }
    public double size() {
        
        return this.length;
    }

}

package demo2;

public class Circle implements 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 Circle() {
        
    }
    public double size() {
        
        return Math.PI * Math.pow(this.r, 2);
    }

}


package demo2;

public class Test {

    public static void main(String[] args) {
        Shape steep = new Steep(8);
        Shape circle = new Circle(3);
        System.out.println("直线的长度为:"steep.size());
        System.out.println("圆的面积为:"circle.size());
    }

}

实验结果

  1. 编程技巧

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

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

总结

本次实验让我理解了抽象类,还有对象的多态,以及接口,熟练的使用了包

第七周总结

本周主要讲了抽象类与接口的应用,object类。

抽象类与接口的应用

抽象类主要是提供模板作用,接口主要是制定标准。
抽象类中可以定义多个内部抽象类,接口中可以定义多个内部接口。

抽象类与接口之间的关系


一个类不要去继承一个已经实现的类,要么继承抽象类,要么实现接口,如果接口和抽象类都可以使用,那么优先使用接口,避免单继承局限。

Object类

object类是Java中最为常用的一个系统类,利用object类可以实现参数的统一。java中object是所有类的父类, 没有明显的继承,那就是object的子类。

tostring打印对象时使用,可以覆写tostring,这样调用tostring就是子类覆写过的。
object类中提供的equals方法默认比较的是地址

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!