首页 > 编程语言 > 详细

第六周&java实验报告四

时间:2019-10-07 18:12:01      阅读:102      评论:0      收藏:0      [点我收藏+]

一.实验目的

(1)掌握类的继承

(2)变量的继承和覆盖,方法的继承,重载和覆盖的实现;

二.实验的内容

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

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

2.圆类Circle的方法成员:

   Circle():构造方法,将半径置0

   Circle(double r):构造方法,创建Circle对象时将半径初始化为r

   double getRadius():获得圆的半径值

   double getPerimeter():获得圆的周长

   void 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 hello;

import java.util.Scanner;
class Circle{
    
    private double radius;
    private double perimeter;
    private double area;
    
    public Circle() {
        this.setRadius(0);
    }
    
    public Circle(double r) {
        this.setRadius(r);
    }
    
    void disp() {
        System.out.println("圆的周长:"+getPerimeter()+",圆的面积:"+getArea());
    }
    
    public double getRadius() {
        return radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    
    public double getPerimeter() {
        perimeter = 2*getRadius()*Math.PI;
        return perimeter;
    }
    public double getArea() {
        area = Math.PI*Math.pow(getRadius(),2);
        return area;
    }
}
class Cylinder extends Circle{
    private double height;
    private double vol;//圆柱体的体积
    
    public Cylinder() {}
    
    public Cylinder(double r, double h) {
        this.setRadius(r);
        this.setHeight(h);
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
    public double getVol() {
        return Math.PI*getRadius()*getRadius()*getHeight();
    }
    void dispVol() {
        System.out.println("圆柱体的体积:"+getVol());
    }
}

public class Demo1{
    public static void main(String[] args) {
        Scanner s1 = new Scanner(System.in);
        System.out.println("请输入圆的半径");
        double r = s1.nextDouble();
            
        System.out.println("请输入圆柱体的高");
        double h = s1.nextDouble();
        
        Cylinder c = new Cylinder(r,h);
        c.disp();
        c.dispVol();
    }
}

运行截图

技术分享图片

方法

本周题目使用到了构造方法,对数据的封装,继承以及Scanner方法。第一步写出Circle类包含的属性,第二步对所有的属性进行封装,第三步封装后的属性通过setter和getter获得,第四步加入构造方法Circle(),第五步继承圆Circle类,派生圆柱体类Cylinder,第六步,加入构造方法Cylinder(),第七步,使用Scanner()方法。

学习总结

1、本周学习了继承。应该注意的是子类是不能直接访问父类中的私有成员的,但是子类可以调用父类中的非私有方法,但是不能直接调用父类中的私有成员。而且继承只能多层继承不能多重继承。
2、final关键字。使用final声明的类不能有子类;声明的方法不能被子类所覆写;声明的变量为常量,不可以修改。
3、抽象类。抽象方法只需要声明不需要实现,抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。
4、对象的多态性。对象的多态性主要分为以下两种类型:(1)向上转型:父类对象 ← 子类对象;(2)向下转型:子类对象 ← 父类对象;在进行对象的向下转型之前,一定要发生对象向上转型。否则会出现对象转换异常。

第六周&java实验报告四

原文:https://www.cnblogs.com/clayLJX/p/11631419.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!