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


    一.实验目的

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

    二.实验内容

    三.实验过程

    1. 实验源码

    package test;
    import java.util.Scanner;
    class Circle{
    private double radius;//定义半径
    public double getRadius() {//取得Radius属性
    	return radius;
    }
    public void setRadius(double radius) {//设置Radius属性
    	this.radius = radius;
    }
    public Circle() {//声明第一个构造方法设置Radius为0
    	setRadius(0);
    }
    public Circle(double r) {//声明第二个构造方法设置Radius为传递的参数值r
    	setRadius(r);
    }
    public double getPerimeter() {//取得周长
    	return 2*Math.PI*getRadius();
    }
    public void disp() {//输出
    	System.out.println("圆的半径为:"+getRadius());
    	System.out.println("圆的周长为:"+getPerimeter());
    	System.out.println("面积为:"+Math.pow(getRadius(),2)*Math.PI);
    }
    }
    public class 实验四1 {
    
    public static void main(String[] args) {
    	// TODO Auto-generated method stub
    	Scanner sc=new Scanner(System.in);
    	Circle pr=new Circle();
    	pr.disp();
    	System.out.println("请输入半径:");
    	double r=sc.nextDouble();
    	pr.setRadius(r);
    	pr.disp();
    }
    }
    

    实验结果

    2.实验源码

    package test;
    import java.util.Scanner;
    
    class Cylinder extends Circle {//Cylinder是Circle的子类
    private double height;
    public double getHeight() {//取得圆柱体的高
    	return height;
    }
    
    public void setHeight(double height) {//设置圆柱体的高
    	this.height = height;
    }
    
    public Cylinder(double r,double h) {//定义对象后设置圆柱体的半径和高
    	setRadius(r);//调用父类的方法
    	setHeight(h);
    }
    public double getVol() {//取得圆柱体的体积
    	return Math.pow(getRadius(),2)*Math.PI*getHeight();
    }
    public void dispVol() {//输出
    	System.out.println("圆柱体的体积为:"+getVol());
    }
    }
    
    public class 实验四2 {
    public static void main(String[] args) {
    	Scanner sc=new Scanner(System.in);
    	System.out.println("请输入圆的半径:");
    	double r=sc.nextDouble();
    	System.out.println("请输入圆的高:");
    	double h=sc.nextDouble();
    	Cylinder pr=new Cylinder(r,h);//调用子类构造方法,传递参数r,h
    	pr.disp();
    	pr.dispVol();
    }
    }
    

    实验结果

    3.

    在2.中已实现

    结论

    我感觉本次实验主要是考察继承的简单应用,实验内容1不难,主要是写一个类,实验内容2写一个子类,并对父类进行扩展。
    在同一个包中,子类可以直接在另一个class文件中写,而不需要把父类再写一遍。在定义子类对象时,若子类中有构造方法,
    则要直接调用构造方法,这个我发现后,还没搞懂,其余的还好。

    课程总结

    接口

    接口可以理解为一种特殊的类
    1.接口的定义

    interface 接口名称{
            全局常量;
            抽象方法;
    }
    

    在接口中如果不写public,则也是public访问权限,接口中的方法永远是public。
    2.接口实现
    接口的使用要通过子类,子类通过implements关键字实现接口

    class 子类 implements 接口A,接口B,····{//一个子类可以同时实现多个接口
    }
    

    对象的多态性

    对象的多态性主要分两种类型:
    (1)向上转型:子类对象->父类对象
    (2)向下转型:父类对象->子类对象
    对象转型

    对象向上转型:父类 父类对象=子类实例    //向上转型,程序会自动完成
    对象向下转型:子类 子类对象=(子类)父类实例
    

    如果对象发生了向上转型关系,所调用的方法一定是被子类覆写过的方法,若一种方法只在子类中定义,
    而没有在父类中定义,如果要想调用子类定义的其他方法,肯定要使用子类实例。
    对象在进行向下转型之前,必须首先发生对象向上转型,否则会出现对象转换异常。

  • 相关阅读:
    ScaleFlux CSD 2000 在携程的应用实践
    Flex布局
    在 K8s 中快速部署使用 GitLab 并构建 DevOps 项目
    云原生爱好者周刊:Chaos Mesh 升级成为 CNCF 孵化项目
    Kubernetes 备份容灾服务产品体验教程
    云原生爱好者周刊:K8s Security SIG 发布 Kubernetes 策略管理白皮书
    云原生爱好者周刊:美国国家安全局发布网络安全指南
    放大招!青云企业级容器平台 QKCP 迎来重磅升级
    Kubernetes 新型容器逃逸漏洞预警
    用 KubeKey 快速离线部署 K8s 与 KubeSphere
  • 原文地址:https://www.cnblogs.com/jk-liulei/p/11620199.html
Copyright © 2020-2023  润新知