zoukankan      html  css  js  c++  java
  • Java实验报告四

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

    二、实验内容

    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();                               //读取半径数入高
               if(r<0) {
                    System.out.println("半径不能为负请重新运行程序"); 
                    return;
                }
    			System.out.println("请输入高:");
    			double h=s.nextInt();                              //读取高输入值
                  if(h<0) {
                    System.out.println("高不能为负请重新运行程序"); 
                    return;
                }
    			Cylinder s1=new Cylinder(r,h);
    			s1.disp();                                        //调用类中的输出
    			s1.dispVol();		
    	}
    }
    }
    
    

    2)实验结果截图

    遇到的问题:在静态方法中调用了动态,导致结果出错。所以在子类继承父类中用了static函数,结果对了。

    学到的知识:继承和覆盖。
    super关键字
    1).使用super可以访问父类中的方法和属性。
    2).调用父类构造,必须放在子类构造方法的首行,因此与this不能同时出现。
    final关键字
    1).使用final声明的类不能有子类。
    2).使用final声明的方法不能被子类所覆写。
    3).使用final声明的变量即为常量,不可修改。
    总结:
    多态的特性:多态是同一事件发生在不同的对象上会产生不同的结果。多态的前提是有一个父类,多个子类。比如说森林,指的可以是由松树组成的森林等具体的东西。星系,指的可以是太阳系组成的星系等。
    继承:子类拥有父类的特征,而父类没有,父类更通用,子类更具体。使用extends继承父类,语句格式:class 子类名 extends 父类名{}。
    这周作业不是很难,主要就是会运用子类调用父类这个知识点,而且有点粗心,竟然在静态构造方法中调用了动态,导致了编译出错,最后在网上查找到了解决办法,直接在构造方法中加入static函数,其中我还出现了一些小错误,括号的位置都打错了。总的来说,这周作业感觉一般,没什么好讲的,在书上就可以找到方法。

  • 相关阅读:
    RTSP视频流媒体智能分析平台EasyNVR中的H264及H265编码视频存储计算方法介绍
    RTSP协议视频平台EasyNVR内H265编码EasyWasmPlayer播放器如何优化起播时的快照功能?
    RTSP协议视频智能分析平台EasyNVR如何获取云端录像的视频快照截图?
    RTSP拉流协议视频智能分析平台EasyNVR在Chrome浏览器播放视频windows内存占用过高如何解决?
    jquery基础
    js链式编程
    js设计模式--单体模式
    js接口
    js的面向对象
    js函数
  • 原文地址:https://www.cnblogs.com/tzmad/p/11608922.html
Copyright © 2011-2022 走看看