一.实验目的

(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 实验四;

import java.util.Scanner;
class Circle {
private double radius; public Circle(){ //将半径置为0
this.setRadius(0);
} public Circle(double r){
this.setRadius(r);
} public double getRadius() { //获得半径
return radius;
} public void setRadius(double radius) {
this.radius = radius;
}
public double getPerimeter() { //获得周长
return getRadius()*2*Math.PI;//math.PI代表π
}
public double getArea() { //获得面积
return Math.PI*getRadius()*getRadius();
}
public void disp(){
System.out.println("圆的半径:"+getRadius());
System.out.println("圆的周长:"+getPerimeter()+" 圆的面积:"+getArea());
}
}
class Cylinder extends Circle{
private double height; public double getHeight() {
return height;
} public void setHeight(double height) {
this.height = height;
}
Cylinder (double r,double h){
this.setRadius(r);
this.setHeight(h);
} public double getVol(){
return getArea()*getHeight();
} public void dispVol(){
System.out.println("圆柱的体积:"+getVol());
}
public static void main(String[] args){
System.out.println("请输入圆的半径");
Scanner sc=new Scanner(System.in);
double r=sc.nextDouble();
System.out.println("请输入圆柱的高");
double h=sc.nextDouble();
Cylinder Y=new Cylinder(r,h);
Y.disp();
Y.dispVol();
}
}

实验结果

学习总结:

本周学习了对象的多态性

1)向上转型:子类对象→父类对象(自动转换)

2)向下转型:父类对象→子类对象(强制转换)

继承:在Java类中只允许单一继承,即一个子类只可以继承一个父类,允许进行多层继承,即一个子类可以有一个父类,一个父类还可以有一个父类,且子类将继承父类的非私有属性和方法,但父类与子类只能一对一,即一个父类下面只有一个子类,但是那个子类可以作为父类进行下一次的继承。

方法的重载与复写:在重载中,方法名称相同,参数的类型或者个数不同,而覆盖都是相同的。覆盖只有发生在父类与子类之间,而重载可以发生在同一类中。

main方法不能使用this与super

继承中super 可以调用父类的构造方法(非私有),调用父类的属性及其方法,this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。

使用final定义类时,不能被继承,即使用final声明的类不能有有子类;不能被子类覆写;用final声明的变量即常量,常量不可修改。

Interface关键字:接口,接口里只可以有全局常量(每个字母需要大写)和抽象方法

Implements关键字:实现接口。

this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

super():

1.super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。

2.super()和this()均需放在构造方法内第一行,因此与this不能同时出现。

第六周学习总结&实验报告四的更多相关文章

  1. 第五周学习总结&实验报告(三)

    第五周学习总结&实验报告(三) 这一周又学习了新的知识点--继承. 一.继承的基本概念是: *定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需 ...

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

    实验报告(四) 一.实验目的 1.掌握类的继承 2.变量的继承和覆盖,方法的继承,重载和覆盖的实现 二.实验的内容 1.根据下面的要求实现圆类Circle. 圆类Circle的成员变量:radius表 ...

  3. 第八周学习总结&实验报告(6)

    实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...

  4. 第五周学习总结&实验报告三

    第五周课程总结 1.this和super的区别: this:访问本类中的属性,如果本类没有此属性则从父类中继续查找:访问本类中的方法,如果本类中没有此方法则从父类中继续查找:调用本类构造,必须放在构造 ...

  5. 第十三周学习总结&实验报告(八)

    图像界面 件处理及监听处理 1.键盘事件(KeyEvent)及监听处理(KeyListener) 1.1加入事件监听 super.addWindowListener(new WindowAdapter ...

  6. 第九周学习总结&实验报告七

    实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...

  7. 第八周学习总结&实验报告六

    实验总结 :类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 : 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异 ...

  8. 第九周学习总结&实验报告(7)

    完成火车站售票程序的模拟. 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3) 卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情 况 实验代码: package y ...

  9. 第六周课程总结&实验报告

    一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...

随机推荐

  1. 同余dp

    先验知识: 余数的计算公式:c = a -⌊ a/b⌋ * b 其中,⌊ ⌋为向下取整运算符,向下取整运算称为Floor,用数学符号⌊ ⌋表示 题目: Consider an arbitrary se ...

  2. CodeForce-1196D2-RGB Substring (hard version)

    原题链接 题目大意与上题完全一样,只是数据规模更大. 思路: 再用上题的暴力肯定TLE,所以需要优化一下搜索过程.上一题我们是外层遍历n,内层遍历3种情况.这题我们外层遍历3种情况,内层遍历数组,记录 ...

  3. 关于Python的10大实用编程技巧

      Python 是一种通用的脚本开发语言,比其他编程语言更加简单.易学,其面向对象特性甚至比Java.C#..NET更加彻底,因此非常适合快速开发. Python 已经成为最受欢迎的程序设计语言之一 ...

  4. shell编程:awk基础

    语法格式: 一 awk 'BEGIN{}pattern{commands}END{}' file_name 二 standard output | awk 'BEGIN{}pattern{comman ...

  5. jvm(1)性能监控-linux相关命令

    top命令能够实时显示系统中各个进程的资源占用情况,其输出信息分为两部分,前半部分为系统统计信息,后半部分是进程信息. 第一行是任务队列信息,它的结果等同于uptime命令. 第二行是进程统计信息: ...

  6. 74.Maximal Rectangle(数组中的最大矩阵)

    Level:   Hard 题目描述: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle con ...

  7. Go语言_包、变量和函数

    包.变量和函数 学习 Go 程序的基本结构. Go 作者组编写,Go-zh 小组翻译. https://go-zh.org 包 每个 Go 程序都是由包构成的. 程序从 main 包开始运行. 本程序 ...

  8. webpack中的图片打包之路

    最近在Github上弄项目,需要搭建一个webpack开发环境.Emmm,是的,从0开始搭建一个项目确实不容易,光Webpack的坑就够我踩一路的了.这不,刚搭建到“图片打包”这里,就遇到了麻烦.最后 ...

  9. Python内置函数(19)-slice

    官方文档 class slice(stop) class slice(start, stop[, step]) Return a slice object representing the set o ...

  10. sendmail 出现 My unqualified host name的解决办法

    有"My unqualified host name"错误 修改/etc/hosts, 在本机的ip那一行, 在xxxhostname后面加上"  xxxhostname ...