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


    实验四 类的继承

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

    (一)抽象类的使用

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

    2.编程技巧

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

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

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

    实验代码

    1.抽象类

    package chongya;

    public abstract class XINGZHUANAA {

    public abstract double getArea();
    }

    2.三角形类

    package chongya;

    public class Sjx extends XINGZHUANAA {
    private double x;
    private double y;
    private double z;
    public Sjx(double x,double y,double z) {
    this.x=x;
    this.y=y;
    this.z=z;
    }

    public double getX() {
    return x;
    }
    public void setx(double x) {
    this.x=x;
    }
    public double getY() {
    return y;
    }
    public void setY(double y) {
    this.y=y;
    }
    public double getZ() {
    return z;
    }
    public void setC(double z) {
    this.z = z;
    }
    public double getP(){
    double p=((x+y+z)/2);
    return p;
    }


    public double getArea() {
    double area=Math.sqrt(getP()*(getP()-x)*(getP()-y)*(getP()-z));
    return area;
    }
    }

    3.矩形类

    package chongya;

    public class Rectangle extends XINGZHUANAA {

    private double length;
    private double width;

    public Rectangle(double length,double width) {
    this.length=length;
    this.width=width;
    }

    public double getLength() {
    return length;
    }

    public void setLength(double length) {
    this.length = length;
    }

    public double getWidth() {
    return width;
    }

    public void setWidth(double width) {
    this.width = width;
    }
    @Override
    public double getArea() {
    double area1=getLength()*getWidth();
    return area1;
    }

    }

    4.圆类

    package chongya;

    public class Yuan extends XINGZHUANAA {
    private double radius;

    public Yuan(double radius) {
    this.radius = radius;
    }

    public double getRadius() {
    return radius;
    }

    public void setRadius(double radius) {
    this.radius = radius;
    }
    @Override
    public double getArea() {
    // TODO Auto-generated method stub
    double area=Math.pow(radius,2)*3.14;
    return area;
    }

    }

    实验截图

    (二)使用接口技术

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

    1. 编程技巧

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

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

     

     一 实验代码

    接口

    package jieko;

    public interface Shape {
    public void size();
    }

    package jieko;

    public class Cricle implements Shape {
    private double radius;

    public Cricle(double radius) {
    this.radius=radius;
    }
    public double getRadius() {
    return radius;
    }
    public void setRadius(double radius) {
    this.radius = radius;
    }

    public double getArea() {
    double area=Math.pow(radius,2)*3.14;
    return area;
    }
    public void size() {
    System.out.println("圆的大小:"+getArea());
    }
    }

    直线

    package jieko;

    public class Zhixian implements Shape {
    private double length;

    public Zhixian(double length) {
    this.length=length;
    }

    public double getLength() {
    return length;
    }

    public void setLength(double length) {
    this.length = length;
    }
    public double getHigh() {
    double high=length;
    return high;
    }
    public void size() {
    System.out.println("直线长度:"+getHigh());
    }
    }

    二 实验截图

    课程总结

    抽象类与接口

    1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

    2、抽象类要被子类继承,接口要被类实现。

    3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

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

    5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

    6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

    7、抽象类里可以没有抽象方法

    8、如果一个类里有抽象方法,那么这个类只能是抽象类

    9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

    10、接口可继承接口,并可多继承接口,但类只能单根继承。

  • 相关阅读:
    〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示
    〖Linux〗Kubuntu, the application 'Google Chrome' has requested to open the wallet 'kdewallet'解决方法
    unity, dll is not allowed to be included or could not be found
    android check box 自定义图片
    unity, ios skin crash
    unity, Collider2D.bounds的一个坑
    unity, ContentSizeFitter立即生效
    类里的通用成员函数应声明为static
    unity, Gizmos.DrawMesh一个坑
    直线切割凹多边形
  • 原文地址:https://www.cnblogs.com/lx1943661721/p/11663235.html
Copyright © 2020-2023  润新知