第六周课程总结&实验报告(四)

Java实验报告(四)

一、 实验目的

  • (1)掌握类的继承
  • (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现;

二、 实验内容

(1)根据下面的要求实现圆类Circle。

1.圆类Circle的成员变量:radius表示圆的半径。

2.圆类Circle的方法成员:

  •  Circle():构造方法,将半径置0
    
  •  Circle(double r):构造方法,创建Circle对象时将半径初始化为r
    
  •   double getRadius():获得圆的半径值
    
  •  double getPerimeter():获得圆的周长
    
  • void disp():将圆的半径和圆的周长,圆的面积输出到屏幕
    

实验源码:



public class Circle {
    private double Radius;
    public double getRadius() {
        return Radius;
    }
    public void setRadius(double radius) {
        Radius = radius;
    }

    Circle(double r){

        Radius = r;

    }
    double getArea(double r){

        return Math.PI * r * r;

    }
    double getPerimeter(double r){

        return 2 * Math.PI * r;

    }
    public void disp( ){
        System.out.println("圆的半径:"+ this.Radius);
        System.out.println("圆的面积: " + this.getArea(Radius));
        System.out.println("圆的周长: " + this.getPerimeter(Radius));
    }
    public static void main(String[] args) {
        Circle c =new Circle(1.0);
        c.disp();
    }
}


实验结果:

(2)继承第一题中的圆Circle类,派生圆柱体类Cylinder。要求如下:

1.圆柱体类Cylinder的成员变量:height表示圆柱体的高。

2.圆柱体类Cylinder的成员方法:

    Cylinder(double r,double h)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱体高初始化为h。

    double getHeight():获得圆柱体的高

    double getVol():获得圆柱体的体积

    void dispVol():将圆柱体的体积输出到屏幕

3.按照第二题的Cylinder类,接上键盘的输入值作为圆的半径和圆柱体的高,计算圆柱体的体积

实验源码:

package com.company;

import java.util.Scanner;

class program {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        double r = sc.nextDouble();
        double h = sc.nextDouble();

        Cylinder a = new Cylinder(r,h);
        a.dispVol();
    }
}

public class Circle {
    protected double Radius;
    Circle() {
        this.Radius = 0;
    }

    Circle(double r) {
        this.Radius = r;
    }

    double getRadius() {
        return this.Radius;
    }
    double getPerimeter() {
        return 2 * Math.PI * this.Radius;
    }
    double getArea() {
        return Math.PI * this.Radius * this.Radius;
    }

    public void disp( ){
        System.out.println("圆的半径:" + this.Radius);
        System.out.println("圆的面积:" + getArea());
        System.out.println("圆的周长:" + getPerimeter());
    }
}

class Cylinder extends Circle {         // class 子类 extends 父类
    double height;

    Cylinder(double r,double h) {
        super.Radius =  r;
        this.height = h;
    }

    double getHeight() {
        return this.height;
    }

    double getVol() {       // 获取圆柱的体积
        return super.getArea() * this.height;
    }

    void dispVol() {
        System.out.println("圆柱体的体积:" + getVol());
    }
}

实验结果:

内容总结:

作业问题:

第一题的个人想法:

public class Main {

    public static void main(String[] args) {
        Circle circle = new Circle();
        Scanner sc = new Scanner(System.in);
        double radius =sc.nextDouble();
        System.out.println("圆的半径为:"+circle.getRadius);
        System.out.println("圆的面积为:"+circle.getArea(5));
        System.out.println("圆的周长为:"+circle.getPerimeter(5));
    }
  }
  class Circle{
    public String getRadius;
    public double radius;
    public double getRadius() {
        return radius;
    }
    public double getArea(double radius){

        return radius*radius*Math.PI;

    }
    public double getPerimeter(double radius){

        return 2*radius*Math.PI;

    }

}

截图:

抽象类

abstract class抽象类名称{
    属性;
    访问权限返回值类型方法名称(参数){ //普通方法
        [return返回值];
}
    访问权限abstract返回值类型方法名称(参数); //抽象方法
    //在抽象方法中是没有方法体的
}

instanceof关键字

    1. instanceof关键字的作用:判断一个对象是否属于指定的类别。
    1. instanceof关键字的使用前提:判断的对象与指定的类别必须要存在继承或者实现的关系。
    1. instanceof关键字的使用格式:对象 instanceof 类别
    1. instanceof关键字的作用: 一般我们做强制类型转换之前都会使用该关键字先判断一次,然后再进行转换的。

接口

接口是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。

接口与类相似点:
  • 一个接口可以有多个方法。
  • 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
  • 接口的字节码文件保存在 .class 结尾的文件中。
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。
抽象类和接口的区别
    1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
    1. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
    1. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
    1. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
接口的声明语法格式如下:
[可见度] interface 接口名称 [extends 其他的接口名] {
        // 声明变量
        // 抽象方法
}
posted @ 2019-10-07 23:04  颜晴超甜♡  阅读(134)  评论(0编辑  收藏  举报