Java实验报告四 - Go语言中文社区

Java实验报告四


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

二、实验内容

1580374-20190929170947864-2115279403.png

1)实验代码

import java.util.Scanner;
public class Circle{
    private static  double radius;                     //声明变量
    private double perimeter;
    private double area;
    public Circle(){                                           //构造半径为0
        this.setRadius(0);
    }
    public Circle(double r) {                              //构造半径为r
        this.setRadius(r);
    }
    public void setRadius(double radius) {
        this.radius=radius;
    }
    public static double getRadius() {
        return radius;
    }
    public void setPerimeter(double perimeter) {
        this.perimeter=perimeter;
    }
    public double getPerimeter(){
        return getRadius()*2*Math.PI;
    }
    public void setArea(double area) {
        this.area=area;
    }
    public double getArea() {
        return getRadius()*getRadius()*Math.PI;
    }
    public void disp() {                                                        //输出半径,周长,面积
        System.out.println("圆的半径为:"+getRadius());
        System.out.println("圆的周长为:"+getPerimeter());
        System.out.println("圆的面积为:"+getArea());
    }
     static class Cylinder extends Circle{                         //Cylinder继承Circle
        private double height;
        public Cylinder(double r,double h) {                      //半径,高初始化
            this.setRadius(r);
            this.setHeight(h);
        }
        private void setHeight(double height) {
            this.height=height; 
        }
    public  double getHeight() {                                          //获得高
        return height;
    }
    public  double getVol() {                                                //获得体积
        return getRadius()*getRadius()*Math.PI*getHeight();
    }
    public  void dispVol() {                                                      //输出体积
        System.out.println("圆柱体的体积:"+getVol());
    }
    public  static void main(String[] args) {
        Scanner s=new Scanner(System.in);
            System.out.println("请输入半径:");
            double r=s.nextInt();                               //读取半径数入值
            System.out.println("请输入高:");
            double h=s.nextInt();                              //读取高输入值
            Cylinder s1=new Cylinder(r,h);
            s1.disp();                                        //调用类中的输出
            s1.dispVol();       
    }
}
}

2)实验结果截图
1580374-20190929170930288-1969337570.png
遇到的问题:在静态方法中调用了动态,导致结果出错。所以在子类继承父类中用了static函数,结果对了。

学到的知识:继承和覆盖。
super关键字
1).使用super可以访问父类中的方法和属性。
2).调用父类构造,必须放在子类构造方法的首行,因此与this不能同时出现。
final关键字
1).使用final声明的类不能有子类。
2).使用final声明的方法不能被子类所覆写。
3).使用final声明的变量即为常量,不可修改。
总结:
多态的特性:我觉得就是同一个方法根据调用对象的不同而产生多种结果。
这周作业不是很难,主要就是会运用子类调用父类这个知识点,而且有点粗心,竟然在静态构造方法中调用了动态,导致了编译出错,最后在网上查找到了解决办法,直接在构造方法中加入static函数,其中我还出现了一些小错误,括号的位置都打错了。总的来说,这周作业感觉一般,没什么好讲的,在书上就可以找到方法。

转载于:https://www.cnblogs.com/tzmad/p/11608922.html

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_30355437/article/details/102156440
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:00:04
  • 阅读 ( 749 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢