第六周课程总结&实验报告(四)
实验报告(四)
一.实验目的
1.掌握类的继承
2.变量的继承和覆盖,方法的继承,重载和覆盖的实现
二.实验的内容
1.根据下面的要求实现圆类Circle。
- 圆类Circle的成员变量:radius表示圆的半径。
圆类Circle的方法成员:
Circle():构造方法,将半径置0 Circle(double r):构造方法,创建Circle对象时将半径初始化为r double getRadius():获得圆的半径值 double getPerimeter():获得圆的周长 void disp():将圆的半径和圆的周长,圆的面积输出到屏幕
实验代码:
圆类Circle
package 测试;
public class Circle {
double radius;
public void Circle() {
this.radius = 0;
}
public void Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getPerimeter() {
double perimeter;
perimeter=2*radius*Math.PI;
return perimeter;
}
public double getArea() {
double area;
area=radius*radius*Math.PI;
return area;
}
public void disp() {
System.out.println("圆的半径:"+getRadius());
System.out.println("圆的周长:"+getPerimeter());
System.out.println("圆的面积:"+getArea());
}
}
2.继承第一题中的圆Circle类,派生圆柱体类Cylinder。要求如下:
- 圆柱体类Cylinder的成员变量:height表示圆柱体的高。
圆柱体类Cylinder的成员方法:
Cylinder(double r,double h)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱体高初始化为h。 double getHeight():获得圆柱体的高 double getVol():获得圆柱体的体积 void dispVol():将圆柱体的体积输出到屏幕
- 按照第二题的Cylinder类,接上键盘的输入值作为圆的半径和圆柱体的高,计算圆柱体的体积
实验代码:
圆柱体类Cylinder
package 测试;
public class Cylinder extends Circle {
double height;
public void Cylinder(double radius,double height) {
this.height=height;
this.radius=radius;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getVol() {
double vol;
vol=radius*radius*height*Math.PI;
return vol;
}
public void dispVol() {
System.out.println("圆柱的体积:"+getVol());
}
}
实验运行
package 测试;
import java.util.Scanner;
public class 测试0 {
public static void main(String[] args) {
Scanner num=new Scanner(System.in);
System.out.println("请输入圆的半径:");
double radius=num.nextDouble();
System.out.println("请输入圆柱体的高:");
double height=num.nextDouble();
Cylinder cyl=new Cylinder();
cyl.Cylinder(radius,height);
cyl.disp();
cyl.dispVol();
}
}
实验运行结果截图:

实验大致思路:
先创造父类Circle,构建其中的方法成员,再创建子类Cylinder继承父类Circle,再构建其中的方法成员,最后再构建一个用于接收键盘输入数据的类,引用类Cylinder进行计算及输出数据.
实验中遇到的问题:
题目不是很复杂,就是让我们了解继承的使用,在编写的时候,Eclipse提醒我此方法具有构造函数名,虽然好像不是错误,但是我想知道会不会有什么影响,特地会将这个标出来.还有就是我想在父类加一个public static void main(String[] args)函数进行调试,输入没问题,但是调用方法的时候提示我不能对非静态方法进行静态引用虽然在前面的构造函数前加上static就没问题了,但是觉得可能不符合题目要求,就在调试完了之后就把代码改回去了,对于这个"不能对非静态方法进行静态引用"还是不是很明白,
第六周课程总结
因为国庆假期的缘故,这周只上了一节课,老师没有讲太多的东西,就是进一步的学习了有关继承的知识
这周学习的内容:
1.接口
接口是java中最重要的概念之一,接口可以理解为一种特殊的类,里面全部是由全局变量和公共的抽象方法所组成.
接口的定义格式
interface 接口名称{
全局常量;
抽象方法;
}
需要注意的是在接口中的抽象方法必须定义成public访问权限,这是绝对不可改变的.
实现接口格式
class 子类 implements 接口A,接口B,...{
}
继承抽象类实现接口格式
class 子类 extends 抽象类 implements 接口A,接口B,...{
}
接口的继承格式
interface 子接口 extends 父接口A,父接口B,....{
}
2.对象的多态性
(1).向上转型:子类对象->父类对象
(2).向下转型:父类对象->子类对象
对于向上转型,程序会自动完成,而对于向下转型时,一定要明确的指明要转型的子类类型.向下转型前要进行一次向上转型.如下格式:
对象向上转型:父类 父类对象 = 子类实例;
对象向下转型:子类 子类对象 = (子类)父类实例;
3.instanceof关键字:
在java中可以使用instanceof关键字判断一个对象到底是不是哪个类的实例,如下格式:
对象 instanceof 类 → 返回boolean类型
第六周课程总结&实验报告(四)的更多相关文章
- 第六周学习总结&实验报告四
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
- 第六周课程总结&实验报告
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
- 第八周课程总结&实验报告(六)
第八周课程总结 启动多线程售票(上课老师说要加入作业的部分) public class TestDemo { public static void main(StringD args) throws ...
- 第八周课程总结 & 实验报告(六)
第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定 ...
- 第五周课程总结&实验报告(四)
第五周课程总结 本周主要学习了 1.抽象类 抽象类的定义格式 abstract class抽象类名称{ 属性; 访问权限返回值类型方法名称(参数){ //普通方法 [return返回值]; } 访问权 ...
- 第三周课程总结&实验报告
课程总结 在这周对Java进行了更深层次的学习,Java的学习也变得越来越困难而有趣,加入了一些新的构造新的方法,还学习了一些简化代码的方式. 面向对象的基本概念 对于面向对象的程序设计有三个主要特征 ...
- 第九周课程总结 & 实验报告(七)
第九周课程总结 一.多线程 1.线程的状态 2.线程操作的相关方法 二.Java IO 1.操作文件的类---File ()基本介绍 ()使用File类操作文件 .RandomAccessFile类 ...
- 第七周课程总结 & 实验报告(五)
第七周课程总结 一.抽象类与接口的应用 1.实例化 2.实际应用 ---模板设计(抽象类) ---制定标准(接口) 3.设计模式 ---工厂设计 ---代理设计 ---适配器设计 二.抽象类与接口之间 ...
- 第三周课程总结&实验报告(一)
实验报告(一) 1.打印输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个"水仙花数" ...
随机推荐
- 实现Promise类
基本使用: let promise = new Promise((resolve, reject) => { // do something if (true) { resolve('succe ...
- Js阻止冒泡,Vue中如何阻止冒泡事件
js解决冒泡:event.stopPropagation() vue解决冒泡: 事件.stop,例如:@click.stop="" ,@mouseover.stop="& ...
- HTTPS中CA证书的签发及使用过程
1,HTTPS 简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在 ...
- linux系统awk命令
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程:?依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f ...
- EfficientNet学习笔记
EfficientNet是谷歌大脑在2019年提出的,论文地址是:https://arxiv.org/pdf/1905.11946.pdf 这篇文章主要想解决的一个问题是,如何平衡网络的深度.宽度和分 ...
- SDRAM介绍
一. 介绍 存储器的最初结构为线性,它在任何时刻,地址线中都只能有一位有效.设容量为N×M的存储器有S0-Sn-1条地址线:当容量增大时,地址选择线的条数也要线性增多,利用地址 ...
- h5转pb的两个坑
1.需要加上如下设置,否则转换前后输出可能不一致,这个主要针对dropout.BN层训练测试不一致 from keras import backend as K K.set_learning_phas ...
- Euler-path
对于每个连通块欧拉回路存在的条件 无向图:只存在两个或者零个度数为奇数的点 有向图:每个点的入度等于出度或者至多有两个点入度不等于出度且一个出度比入度多一另一个入度比出度多一 HDU 多校第二场 C. ...
- CTF基本常识
参照百度百科: https://baike.baidu.com/item/Pwn/5321286?fr=aladdin ”Pwn”是一个黑客语法的俚语词 [1] ,是指攻破设备或者系统 [2] . ...
- 第二章 Vue快速入门-- 24 过滤器-Vue中全局过滤器的基本使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...