第六周学习总结&(实验报告四)
一.实验目的
(1)掌握类的继承方法
(2)变量的继承和覆盖,方法的继承,重载和覆盖实现
二.实验内容
一.实验目的
(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;
private double perimeter;
private double area; public Circle(){
this.setRadius(0);
}
public Circle(double r) {
this.setRadius(r);
}
public double getRadius(){
return radius;
}
public void setRadius(double radius) {
this.radius = 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 Math.PI*Math.pow(getRadius(),2);
}
public void disp(){
System.out.println("圆的半径:"+getRadius());
System.out.println("圆的周长:"+getPerimeter());
System.out.println("圆的面积:"+getArea());
}
}
class Cylinder extends Circle{
private double height ;
public double getHeight(){
return height;
}
public void setRadius(double height) {
this.height = height;
}
Cylinder(double r,double h) {
this.setRadius(r);
this.setRadius(h);
}
public double getV() {
return getArea()*height;
}
public void dispV(){
System.out.println("圆柱的体积:"+getV());
}
public static void main(String[] args){
Scanner s=new Scanner(System.in);
System.out.println("请输入半径:");
double r=s.nextInt();
System.out.println("请输入高:");
double h=s.nextInt();
Cylinder T=new Cylinder(r,h);
T.disp();
T.dispV();
} }
实验结果:

编程总结:
上课还是要多听点好,在前面那个做长方形的时候,我们已经对此类程序有一定了解和编写基础,按照那一周做题的思路来是没什么问题的,而且这周老师讲了一键set和get,打代码也快了。但是在新知识继承上还是会出现问题,(方法 main 不能声明为“静态”;只能在静态类型或顶级类型中才能声明静态方法),这是我在实验中遇到的问题,百度了,给我的建议是:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
似懂非懂, public class Cylinder extends Circle{;问题就出现在这里,这里的public和后面的public static起冲突了,导致后面的静态无法声明,所以把前面的public删除后,就没什么问题了。但是写起来还是不怎么熟练。
学习总结:
继承:在Java类中只允许单一继承,即一个子类只可以继承一个父类,且子类将继承父类的非私有属性和方法,但父类与子类只能一对一,即一个父类下面只有一个子类,但是那个子类可以作为父类进行下一次的继承。
方法的重载与复写:在重载中,方法名称相同,参数的类型或者个数不同,而覆盖都是相同的。覆盖只有发生在父类与子类之间,而重载可以发生在同一类中。
super():
1.super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
2.super()和this()均需放在构造方法内第一行,因此与this不能同时出现。
另外老师好像是还讲了instanceof和implements这两个关键字。
implements关键字在class声明中使用,以指示所声明的类提供了在implements关键字后面的名称所指定的接口中所声明的所有方法的实现。
instanceof关键字用来确定对象所属的类。
第六周学习总结&(实验报告四)的更多相关文章
- 第六周学习总结&实验报告四
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
- 第五周学习总结&实验报告(三)
第五周学习总结&实验报告(三) 这一周又学习了新的知识点--继承. 一.继承的基本概念是: *定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需 ...
- 第六周课程总结&实验报告(四)
实验报告(四) 一.实验目的 1.掌握类的继承 2.变量的继承和覆盖,方法的继承,重载和覆盖的实现 二.实验的内容 1.根据下面的要求实现圆类Circle. 圆类Circle的成员变量:radius表 ...
- 第八周学习总结&实验报告(6)
实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...
- 第五周学习总结&实验报告三
第五周课程总结 1.this和super的区别: this:访问本类中的属性,如果本类没有此属性则从父类中继续查找:访问本类中的方法,如果本类中没有此方法则从父类中继续查找:调用本类构造,必须放在构造 ...
- 第十三周学习总结&实验报告(八)
图像界面 件处理及监听处理 1.键盘事件(KeyEvent)及监听处理(KeyListener) 1.1加入事件监听 super.addWindowListener(new WindowAdapter ...
- 第九周学习总结&实验报告七
实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...
- 第八周学习总结&实验报告六
实验总结 :类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 : 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异 ...
- 第九周学习总结&实验报告(7)
完成火车站售票程序的模拟. 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3) 卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情 况 实验代码: package y ...
- 第六周课程总结&实验报告
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
随机推荐
- LB_GETCURSEL和LB_GETTEXT的使用
case IDC_LIST1: { switch (HIWORD(wParam)) { case LBN_DBLCLK: { HWND hwndList = GetDlgItem(hDlg, IDC_ ...
- java实现网页验证码功能_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例为大家分享了java网页验证码的实现代码,供大家参考,具体内容如下 Servlet: package cn.bd ...
- docker容器共享宿主机环境,从而为镜像体积减负
一.背景介绍 响应公司技术发展路线,开发的服务均需要将打成docker镜像,使用docker进行统一管理.可是随着服务越来越多,镜像也越来越多.每次制作镜像的时候都需要将依赖打进容器,这样一个jre的 ...
- layui静态表格固定td宽度,table固定td宽度
正在做一个项目,要求数据表的列是不固定的,有可能是有10列,有可能是20列,第一列宽度要固定,然后我怎么设置都没有用, 这个问题困扰了我三天,后来终于百度到了, 这个博客: https://www.c ...
- .NET DotnetSpider--WebDrvierSpider(ajax动态加载的数据获取)
爬虫获取数据时,可能会遇到AJAX加载的页面,如果无法分析出接口的话,就只能使用秘密武器——WebDriverDownloader.不过最好还是分析出接口为好,WebDriver的性能实在是太低了.现 ...
- cvpr 2019 workshop&oral session
1. Verification and Certification of Neural Networks神经网络的验证与认证 2. Automated Analysis of Marine Video ...
- pycharm selenium 安装firefox驱动和Google驱动教程
一.下载Firefox浏览器或Google浏览器 下载渠道有很多,直接下载最新版的就可以了. 二.下载驱动 Firefox驱动 地址:https://github.com/mozilla/geckod ...
- CDH安装时,部分节点不受管控
解决方案: /opt/cm-5.12.0/etc/init.d/cloudera-scm-agent stop cd /opt/cm-5.12.0/lib/cloudera-scm-agent/ rm ...
- Vue 中 双向绑定数据
1.文本 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- Java九种基本数据类型,以及他们的封装类
基本类型 大小(字节) 默认值 封装类 byte 1 (byte)0 Byte short 2 (short)0 Short int 4 0 Integer long 8 0L Long float ...