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


    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 其他的接口名] {
            // 声明变量
            // 抽象方法
    }
    
  • 相关阅读:
    【力扣】11. 盛最多水的容器
    T-SQL 学习笔记 Chapter 6 子查询、表表达式 和排名函数 (一)
    忽然发现只是虚长了年岁,莫名的伤感。
    Gridview 多重表头 (二)
    那些 Cynthia 教我的事 之 PMSec (三)
    那些 Cynthia 教我的事 之 PMSec (二)
    那些 Cynthia 教我的事 之 PMSec (一)
    Gridview 多重表头 (一)
    项目总结之SSI (一)
    项目总结之MIT (一)
  • 原文地址:https://www.cnblogs.com/zsbhs/p/11632807.html
Copyright © 2020-2023  润新知