第五次java实验报告
Java实验报告
班级 计科二班 学号 20188437 姓名 何磊
完成时间2019/10/10
评分等级
实验四 类的继承
- 实验目的
- 理解抽象类与接口的使用;
- 了解包的作用,掌握包的设计方法。
- 实验要求
- 掌握使用抽象类的方法。
- 掌握使用系统接口的技术和创建自定义接口的方法。
- 了解 Java 系统包的结构。
- 掌握创建自定义包的方法。
- 实验内容
(一)抽象类的使用
1. 设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2
2.编程技巧
(1) 抽象类定义的方法在具体类要实现;
(2) 使用抽象类的引用变量可引用子类的对象;
(3) 通过父类引用子类对象,通过该引用访问对象方法时实际用的是子类的方法。可将所有对象存入到父类定义的数组中。
(二)使用接口技术
1定义接口Shape,其中包括一个方法size(),设计"直线"、"圆"、类实现Shape接口。分别创建一个"直线"、"圆"对象,将各类图形的大小输出。
- 编程技巧
(1) 接口中定义的方法在实现接口的具体类中要重写实现;
(2) 利用接口类型的变量可引用实现该接口的类创建的对象。
- 实验过程(请自己调整格式)
(一)抽象类的使用
(1)实验代码
package抽象类的使用;
public abstract class Shape {
public abstract void talkArea(); //定义抽象方法
}
package抽象类的使用;
public class Triangle extends Shape{
private double a,b,c,p; //三角形三条边和公式常量
public Triangle(int a,int b,int c){
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a){ //判断参数是否满足构成三角形的条件
this.a=a;
this.b=b;
this.c=c;
}
else{
System.out.println("参数不能构成三角形");
}
}
public double getA() {
return a;
}
public double getB() {
return b;
}
public double getC() {
return c;
}
public void talkArea() {
p=(a+b+c)/2;
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a) //判断参数是否满足构成三角形的条件
System.out.println("三角形面积:"+ Math.sqrt(p*(p-a)*(p-b)*(p-c)));
}
}
package抽象类的使用;
public class Rectangle extends Shape{
private double length,hight; //矩形的长和宽
public Rectangle(double length,double hight){
if(length>0&&hight>0){ //判断参数是否满足构成矩形的条件
this.hight=hight;
this.length=length;
}
else{
System.out.println("参数不能构成矩形");
}
}
public double getLength() {
return length;
}
public double getHight() {
return hight;
}
public void talkArea() {
if(length>0&&hight>0) //判断参数是否满足构成三角形的条件
System.out.println("矩形面积:"+length*hight);
}
}
package抽象类的使用;
public class Circle extends Shape{
private double radius; //圆的半径
public Circle(double radius){
if(radius>0){ //判断参数是否满足构成圆的条件
this.radius=radius;
}
else{
System.out.println("参数不能构成圆形");
}
}
public double getRadius() {
return radius;
}
public void talkArea() {
if(radius>0) //判断参数是否满足构成圆的条件
System.out.println("圆形面积:"+radius*radius*Math.PI);
}
}
package抽象类的使用;
public class test {
public static void main(String[] args) {
Shape Triangle = new Triangle(10, 4, 5); //通过父类引用子类对象
Triangle.talkArea();
Shape Rectangle = new Rectangle(-2,2); //通过父类引用子类对象
Rectangle.talkArea();
Shape Circle = new Circle(-3); //通过父类引用子类对象
Circle.talkArea();
}
}
运行结果:

package抽象类的使用;
public class test {
public static void main(String[] args) {
Shape Triangle = new Triangle(3, 4, 5); //通过父类引用子类对象
Triangle.talkArea();
Shape Rectangle = new Rectangle(2,2); //通过父类引用子类对象
Rectangle.talkArea();
Shape Circle = new Circle(3); //通过父类引用子类对象
Circle.talkArea();
}
}
运行结果:

(2)代码截图

(二)使用接口技术
(1)实验代码
package使用接口技术;
interface Shape {
double size(); //等价于:public abstract double size();
void talk(); //等价于:public abstract void talk();
}
package使用接口技术;
class Line implements Shape {
public double length; //直线的长度
Line(double length){ //定义构造方法
this.length=length;
}
public double size() { //覆写接口Shape中的抽象方法
return length;
}
public void talk() { //覆写接口Shape中的抽象方法
System.out.println("直线的长:"+size());
}
}
package使用接口技术;
public class Circle implements Shape {
public double radius; //圆的半径
Circle(double radius){ //定义构造方法
this.radius=radius;
}
public double size() { //覆写接口Shape中的抽象方法
return radius*radius*Math.PI;
}
public void talk() { //覆写接口Shape中的抽象方法
System.out.println("圆的面积:"+size());
}
}
package使用接口技术;
public class test {
public static void main(String[] args) {
Shape line=new Line(5); //实例化子类对象
line.talk(); //调用被覆写过的方法
Shape circle=new Circle(5); //实例化子类对象
circle.talk(); //调用被覆写过的方法
}
}
运行结果:

(2)代码截图




- 结论
本次实验属于抽象类和接口中较简单的应用,完成的很顺利,还需要做一些更有挑战的题目以巩固此类知识。
本周学习了抽象类的基本概念、接口的基本概念、对象的多态性、instanceof关键字、抽象类和接口的应用中的为抽象类与接口实例化、抽象类的实际应用——模板实际、接口的实际应用——制定标准,都在课堂上有了初步的认识,还需课余巩固深入,并预习设计模式——工厂设计。
对象的多态性主要分为以下两种类型:
(1)向上转型:子类对象父类对象。
(2)向下转型:父类对象子类对象
对于向上转型,程序会自动完成,而对于向下转型时,必须明确的指明要转型的子类类型。
对象转型的格式:
对象向上转型:父类父类对象=子类实例;
对象向下转型:子类子类对象=(子类)父类实例;
序号
区别点
抽象类
接口
1
定义
包含一个抽象方法的类
抽象方法和全局变量的集合
2
组成
构造方法、抽象方法、普通方法、常量、变量
常量、抽象方法
3
使用
子类继承抽象类(extends)
子类实现接口(implements)
4
关系
抽象类可以实现多个接口
接口不能继承抽象类,但允许继承多个接口
5
常见设计模式
模板设计
工厂设计、代理设计
6
对象
都通过对象的多态性产生实例化对象
7
局限
抽象类有单继承的局限
接口没有单继承的局限
8
实际
作为一个模板
是作为一个标准或是表示一种能力
9
选择
如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限
10
特殊
一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类
第五次java实验报告的更多相关文章
- 20145334 第五次 java 实验报告
实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 我和20145306张文锦组队编程 http://www.cnblogs.com/besti145306/ ...
- Java实验报告五:Java网络编程及安全
Java实验报告五:Java网络编程及安全 ...
- 20135231 JAVA实验报告三:敏捷开发与XP实践
---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...
- 第七次java实验报告
Java实验报告 班级 计科二班 学号20188437 姓名 何磊 完成时间 2019/10/25 评分等级 实验四 类的继承 实验内容 )总票数1000张:(2)10个窗口同时开始卖票:(3)卖票过 ...
- 第五周总结&实验报告三
第五周总结&实验报告三 实验报告 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- 20145203盖泽双:Java实验报告二
Java实验报告二:Java面向对象程序设计 实验要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 ...
- 20155310第一周JAVA实验报告
20155310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...
- 20145310第一周JAVA实验报告
20145310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...
随机推荐
- luogu 3857 [TJOI2008]彩灯 线性基
可以将每一个开关控制的灯的序列看作是0/1组成的二进制. 由于灯的开和关是满足异或的性质的,所以直接求一下线性基大小即可. 答案为 $2^{size}.$ #include <cstdio> ...
- Git 如何针对项目修改本地提交提交人的信息
Git 如果不进行修改的话,在默认情况下将会使用全局的用户名称和电子邮件. 但是在 GitHub 中是通过用户邮件来进行提交人匹配的. 如何针对项目来修改提交的用户信息? 针对 TortoiseGit ...
- 【CUDA 基础】4.0 全局内存
title: [CUDA 基础]4.0 全局内存 categories: - CUDA - Freshman tags: - 全局内存 - CUDA内存模型 - CUDA内存管理 - 全局内存编程 - ...
- 循环数组实现FIFO
涉及到数据通信的软件开发,不能回避的一点是,设计一个实用高效率的数据缓冲区,例如fifo.今天在做项目时候,需要缓存CAN总线上的数据,然后再需要的时候读这些数据.下边给出我自己设计的,采用循环数组实 ...
- docker的数据管理
容器中管理数据主要有两种方式: 1.数据卷:容器内数据直接映射到本地宿主机. 2.数据卷容器:使用特定容器维护数据卷 数据卷: 数据卷是一个可供容器使用的特殊目录,他将主机操作系统目录直接映射进容器. ...
- zookeeper系列(一)zookeeper图形化的客户端工具
追加一个zookeeper图形化的客户端工具: 1.zookeeper图像化客户端工具的下载地址:https://issues.apache.org/jira/secure/attachment/12 ...
- HBuilderX中自动转换px为upx
uni-app 使用 upx 作为默认尺寸单位, upx 是相对于基准宽度的单位,可以根据屏幕宽度进行自适应.uni-app 规定屏幕基准宽度750upx.但如果设计稿不是750px,那换算单位可头疼 ...
- git忽略提交:.gitignore
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交. Git 忽略文件提交的方法 有三种方法可以实现忽略Gi ...
- bootstrap-table前端实现多条件时间段查询数据
实现思路:通过正则匹配到字段是否符合条件,时间段转换为时间戳比对. 这是大体的效果图: 页面的html代码 <div class="content-head mgb10"&g ...
- HearthBuddy卡牌无法识别
界面上无法识别,提示是 [Unidentified card ID :DAL_010][Unidentified card ID :DAL_415] Unidentified card ID :HER ...