一、实验目的

(1)掌握类的继承方法;

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

二、实验内容

1)实验代码

import java.util.Scanner;
public class Circle{
private static double radius; //声明变量
private double perimeter;
private double area;
public Circle(){ //构造半径为0
this.setRadius(0);
}
public Circle(double r) { //构造半径为r
this.setRadius(r);
}
public void setRadius(double radius) {
this.radius=radius;
}
public static double getRadius() {
return 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 getRadius()*getRadius()*Math.PI;
}
public void disp() { //输出半径,周长,面积
System.out.println("圆的半径为:"+getRadius());
System.out.println("圆的周长为:"+getPerimeter());
System.out.println("圆的面积为:"+getArea());
}
static class Cylinder extends Circle{ //Cylinder继承Circle
private double height;
public Cylinder(double r,double h) { //半径,高初始化
this.setRadius(r);
this.setHeight(h);
}
private void setHeight(double height) {
this.height=height;
}
public double getHeight() { //获得高
return height;
}
public double getVol() { //获得体积
return getRadius()*getRadius()*Math.PI*getHeight();
}
public void dispVol() { //输出体积
System.out.println("圆柱体的体积:"+getVol());
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入半径:");
double r=s.nextInt(); //读取半径数入高
if(r<0) {
System.out.println("半径不能为负请重新运行程序");
return;
}
System.out.println("请输入高:");
double h=s.nextInt(); //读取高输入值
if(h<0) {
System.out.println("高不能为负请重新运行程序");
return;
}
Cylinder s1=new Cylinder(r,h);
s1.disp(); //调用类中的输出
s1.dispVol();
}
}
}

2)实验结果截图



遇到的问题:在静态方法中调用了动态,导致结果出错。所以在子类继承父类中用了static函数,结果对了。

学到的知识:继承和覆盖。

super关键字

1).使用super可以访问父类中的方法和属性。

2).调用父类构造,必须放在子类构造方法的首行,因此与this不能同时出现。

final关键字

1).使用final声明的类不能有子类。

2).使用final声明的方法不能被子类所覆写。

3).使用final声明的变量即为常量,不可修改。

总结:

多态的特性:多态是同一事件发生在不同的对象上会产生不同的结果。多态的前提是有一个父类,多个子类。比如说森林,指的可以是由松树组成的森林等具体的东西。星系,指的可以是太阳系组成的星系等。

继承:子类拥有父类的特征,而父类没有,父类更通用,子类更具体。使用extends继承父类,语句格式:class 子类名 extends 父类名{}。

这周作业不是很难,主要就是会运用子类调用父类这个知识点,而且有点粗心,竟然在静态构造方法中调用了动态,导致了编译出错,最后在网上查找到了解决办法,直接在构造方法中加入static函数,其中我还出现了一些小错误,括号的位置都打错了。总的来说,这周作业感觉一般,没什么好讲的,在书上就可以找到方法。

Java实验报告四的更多相关文章

  1. 第六周学习总结&java实验报告四

    第六周学习总结&java实验报告四 学习总结: 上一周因为接近国庆假期,所以老师没有讲太多的新知识点,只要是带我们一起做了一个动物模拟变声器的实验,进一步了解和学习到继承的 有关知识点和应用: ...

  2. JAVA实验报告四及第六周总结

    JAVA第六周作业 实验报告四 第一题 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造 ...

  3. 第六周课程总结&java实验报告四

    第六周课程总结: 一.instanceof关键字 1.作用:在Java中可以使用instanceof关键字判断一个对象到底是哪个类的实例. 2.格式:对象 instanceof 类 -> 返回b ...

  4. 第六周&java实验报告四

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

  5. 第六周&Java实验报告四(类的继承)

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

  6. 20145203Java实验报告四:Android开发基础

    Java实验报告四:Android开发基础 实验要求: 1.安装Android Studio 2.运行安卓AVD模拟器 3.使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 实验过程 ( ...

  7. 20145221 《Java程序设计》实验报告四:Android开发基础

    20145221 <Java程序设计>实验报告四:Android开发基础 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管 ...

  8. Java实验报告五:Java网络编程及安全

    Java实验报告五:Java网络编程及安全                                                                               ...

  9. Java实验报告二:Java面向对象程序设计

    Java实验报告二:Java面向对象程序设计                                                                               ...

随机推荐

  1. OpenCV笔记(6)(harris角点检测、背景建模)

    一.Harris角点 如上图所示,红色框AB都是平面,蓝色框CD都是边缘,而绿色框EF就是角点. 平面:框往X或Y抽移动,变化都很小. 边缘:框沿X或Y轴移动,其中一个变化很小,而另外一个变化比较大. ...

  2. 静态库lib、动态库dll基础

    首先从hello world!开始 //main.cpp文件 void cpu(); int main() { put(); ; } 在main.cpp中定义了一个cpu():函数,但没有实现其功能, ...

  3. POJ 1149 猪圈买猪 建图太强大!! 没有透彻领悟 慢慢消化

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19575   Accepted: 8948 Description ...

  4. sqli-labs(45)

    基于报错的password处的')闭合注入 就是没有报错信息 payload和43关一样的构造

  5. 论文阅读Graph Convolutional Matrix Completion

    摘要:我们从链路预测的视角考虑推荐系统的matrix completion.像电影评分的交互数据可以表示为一个user-item的二分图,其中的edge表示观测到的评分.这种表示是特别有用的在额外的基 ...

  6. JPA查询getOne()与findOne()的差异以及一些小问题

    起初用Jpa 里面 getOne() 查询一个id的数据 发现查询出来的数据都是空的,但不是空的对象是按照对象默认值来的 所以导致查询不出结果 以为是数据库修改,没有及时修改实体类导致的 但是后来发现 ...

  7. request.getAttribute()和request.getParameter()两个方法的区别

    request.getAttribute()获得的数据必须曾经有过setAttibute()过: 而request.getParameter()获得是客户端POST或者GET请求时所携带的参数的值 g ...

  8. C++入门经典-例3.5-判断某一年是否是闰年之嵌套判断

    1:代码如下: // 3.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  9. Mysql和Orcale的区别

    有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情况:连接很慢甚至宕机,于是就有把数据从MYSQL迁到ORAC ...

  10. 创建新文件(包括上级文件夹),获取外置SD卡的根目录

    public String hebGetExternalRootDir(String externalAndriodSubDirPath){ if ( externalAndriodSubDirPat ...