Java实验报告

班级 计科二班 学号 20188442 姓名 吴怡君

完成时间2019/10/11

评分等级

实验四 类的继承

实验目的

理解抽象类与接口的使用;

了解包的作用,掌握包的设计方法。

实验要求

掌握使用抽象类的方法。

掌握使用系统接口的技术和创建自定义接口的方法。

了解 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 Domon4;

public abstract class Shape {
public abstract void talkArea();
} 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)));
}
} 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);
} } 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 Domon4;

import java.util.Scanner;

public class test {

		public static void main(String[] args) { 

			for(int i=0;i<100;i++){
Scanner input=new Scanner(System.in);
System.out.println("依次输入三角形三条边:");
int a=input.nextInt();
int b=input.nextInt();
int c=input.nextInt();
Shape Triangle = new Triangle(a, b, c); //通过父类引用子类对象
Triangle.talkArea(); System.out.println("分别输入矩形的长和高:");
int length=input.nextInt();
int hight=input.nextInt();
Shape Rectangle = new Rectangle(length,hight); //通过父类引用子类对象
Rectangle.talkArea(); System.out.println("输入圆形的半径:");
int r=input.nextInt();
Shape Circle = new Circle(r); //通过父类引用子类对象
Circle.talkArea();
}
}
}

(2)运行结果

(3)小题总结

这个编程题主要学习了抽象类的使用,以及以前的父类与子类的继承,还有考察了多态性,总体来说是一道有一定水平的题目,但是只要每个知识点学好了解决这个问题还是比较轻松的,这道题让我也知道了自己的不足,因为刚写这道题目的时候,思路还是比较混乱的,就是因为这些知识点不太熟练,不过好在后来慢慢理解了,并且认真做会发现有些东西很有趣,这些编程语言有很多语法都是相通的,所以学起来更加有兴趣,并且自己在测试的时候加了一个for循环发现比不加效果要好很多,这可以一次性测试完所有的考察点,总体来说,感觉还是很不错,继续努力吧,进步空间还很大。

(二)使用接口技术

(1)实验代码

package Domon4接口;

public interface Shape {
public abstract double size();
public abstract void talk();
} 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()); } } 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 Domon4接口;

public class test {

	    public static void main(String[] args) {
Shape line=new Line(6); //实例化子类对象
line.talk(); //调用被覆写过的方法
Shape circle=new Circle(2); //实例化子类对象
circle.talk(); //调用被覆写过的方法
} }

(2)运行结果

(3)小题总结

这道题目主要是考察了接口,需要知道接口的定义,接口里面只有抽象方法和全局常量,且它的作用一般在企业开发产品中作为标准来生产互补产品,所以要掌握好这个知识点,同样也是重点,给我的感觉是在做某些东西上方便了很多。

课程总结

一、

(1)本次实验属于抽象类和接口的学习,感觉内容还挺不错,对于应用性可能会比较实用,学起来感觉掌握有限,需要继续深层次学习。

抽象类与接口的区别:

一般的来说从全局观来看接口比抽象类更加方便,因为局限性小,比如接口可有多个抽象类,对于产品研发有很大的优势。

但是接口里面只能有抽象方法和全局常量,这也是它的缺点,因为有些开发还必须用到其他的一些方法和变量,所以各有优势,但是总的来说能优先选的话,先考虑接口,因为避免单继承的局限。

(2)本周学习了抽象类的基本概念、接口的基本概念、对象的多态性、instanceof关键字、抽象类abstract和接口的应用中的为抽象类与接口实例化、抽象类的实际应用——模板实际、接口的实际应用——制定标准,都在课堂上有了初步的认识,还需课余巩固深入,当然后面还介绍了几种设计模式——工厂设计、代理设计、适配器设计等等。

二、

对象的多态性主要分为以下两种类型:

(1)向上转型:子类对象---->父类对象(自动转型)。

(2)向下转型:父类对象---->子类对象(强制转型)

三、

(1)object关键词:Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。

(2)object类的主要方法

(2.1)toString();

(2.2)equals();

(2.3) hashCode();

2019JAVA第五次实验报告的更多相关文章

  1. 20145330《Java程序设计》第五次实验报告

    20145330<Java程序设计>第五次实验报告 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统 4.结队伙伴 ...

  2. 20145320《Java程序设计》第五次实验报告

    20145320<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18: ...

  3. Java第五次实验报告

    Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ...

  4. 20145240 《Java程序设计》第五次实验报告

    20145240 <Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.05.06 实验 ...

  5. 第五次实验报告 java 网络编程

    20145306 第五次 java 实验报告 实验内容 客户端与服务器连接,客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客 ...

  6. 20145317彭垚 《Java程序设计》第五次实验报告

    20145317彭垚实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21: ...

  7. 《JAVA程序设计》第五次实验报告

    20145333 实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21:3 ...

  8. 20165210 Java第五次实验报告

    20165210 实验五 网络编程与安全 网络编程与安全一: 实验要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA ...

  9. 第五次实验报告:使用Packet Tracer理解OSPF路由协议

    目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 4. 配置 4.1 配置并激活串行地址和以太网地址 4.1.1 R1 4.1.2 R2 4.1.3 R3 4.1.4 PC ...

随机推荐

  1. 前端js之JQuery

    目录 jQuery介绍 jQuery的优势 jQuery内容 jQuery对象 jQuery基础语法结构 jQuery 使用注意事项 查找标签 基本选择器 层级选择器 基本选择器 属性选择器 表单筛选 ...

  2. Robot Framework xpath定位不到元素

    不要使用Click Button关键字-严格来说,该关键字适用于该<button>类型的html元素. 而是使用Click Element-您的目标元素是<a>,然后Click ...

  3. 【leetcode】1274. Number of Ships in a Rectangle

    题目如下: (This problem is an interactive problem.) On the sea represented by a cartesian plane, each sh ...

  4. Python 模块 Ⅱ

    搜索路径 当你导入一个模块,Python 解析器对模块位置的搜索顺序是: 1.当前目录 2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录. 3.如果都 ...

  5. css,scss解决样式:表格的重叠边框

    初始效果: 解决方法: 给带有边框的元素设置如下样式margin:0 0 -borderwidth -borderwidth 这里的borderwidth即为边框的宽度,按照上图所示,则添加样式 ma ...

  6. 自定义 Swiper 的pageControl

    .part5-bg .swiper2 .swiper-pagination2{ bottom: 0.4rem; } /*未选中的小圆点样式*/ .part5-bg .swiper2 .swiper-p ...

  7. CAP拾遗

    概念 在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性.可用性.分区容错性三者中的两个,另外一个必须被牺牲 Consistency 对某个指定的客户端来说,读操 ...

  8. 项目的Servlet类找不到

    先右击项目,

  9. ReactJS 结合 antd-mobile 开发 h5 应用基本配置

    在 ReactJS 较为初级的使用 antd-mobile 使用时候直接加载 node_modules 文件中的相关 CSS,这个使用方法效率低:更高明的方法则按需加载,需要设置如下: 在 packa ...

  10. Linux下kafka集群的搭建

    上一篇日志已经搭建好了zookeeper集群,详细请查看:http://www.cnblogs.com/lianliang/p/6533670.html,接下来继续搭建kafka的集群 1.首先下载k ...