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)实验代码

  1. package Domon4;
  2. public abstract class Shape {
  3. public abstract void talkArea();
  4. }
  5. class Triangle extends Shape{
  6. private double a,b,c,p; //三角形三条边和公式常量
  7. public Triangle(int a,int b,int c){
  8. if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a){ //判断参数是否满足构成三角形的条件
  9. this.a=a;
  10. this.b=b;
  11. this.c=c;
  12. }
  13. else{
  14. System.out.println("参数不能构成三角形");
  15. }
  16. }
  17. public double getA() {
  18. return a;
  19. }
  20. public double getB() {
  21. return b;
  22. }
  23. public double getC() {
  24. return c;
  25. }
  26. public void talkArea() {
  27. p=(a+b+c)/2;
  28. if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a) //判断参数是否满足构成三角形的条件
  29. System.out.println("三角形面积:"+ Math.sqrt(p*(p-a)*(p-b)*(p-c)));
  30. }
  31. }
  32. class Rectangle extends Shape{
  33. private double length,hight; //矩形的长和宽
  34. public Rectangle(double length,double hight){
  35. if(length>0&&hight>0){ //判断参数是否满足构成矩形的条件
  36. this.hight=hight;
  37. this.length=length;
  38. }
  39. else{
  40. System.out.println("参数不能构成矩形");
  41. }
  42. }
  43. public double getLength() {
  44. return length;
  45. }
  46. public double getHight() {
  47. return hight;
  48. }
  49. public void talkArea() {
  50. if(length>0&&hight>0) //判断参数是否满足构成三角形的条件
  51. System.out.println("矩形面积:"+length*hight);
  52. }
  53. }
  54. class Circle extends Shape{
  55. private double radius; //圆的半径
  56. public Circle(double radius){
  57. if(radius>0){ //判断参数是否满足构成圆的条件
  58. this.radius=radius;
  59. }
  60. else{
  61. System.out.println("参数不能构成圆形");
  62. }
  63. }
  64. public double getRadius() {
  65. return radius;
  66. }
  67. public void talkArea() {
  68. if(radius>0) //判断参数是否满足构成圆的条件
  69. System.out.println("圆形面积:"+radius*radius*Math.PI);
  70. }
  71. }
  1. package Domon4;
  2. import java.util.Scanner;
  3. public class test {
  4. public static void main(String[] args) {
  5. for(int i=0;i<100;i++){
  6. Scanner input=new Scanner(System.in);
  7. System.out.println("依次输入三角形三条边:");
  8. int a=input.nextInt();
  9. int b=input.nextInt();
  10. int c=input.nextInt();
  11. Shape Triangle = new Triangle(a, b, c); //通过父类引用子类对象
  12. Triangle.talkArea();
  13. System.out.println("分别输入矩形的长和高:");
  14. int length=input.nextInt();
  15. int hight=input.nextInt();
  16. Shape Rectangle = new Rectangle(length,hight); //通过父类引用子类对象
  17. Rectangle.talkArea();
  18. System.out.println("输入圆形的半径:");
  19. int r=input.nextInt();
  20. Shape Circle = new Circle(r); //通过父类引用子类对象
  21. Circle.talkArea();
  22. }
  23. }
  24. }

(2)运行结果

(3)小题总结

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

(二)使用接口技术

(1)实验代码

  1. package Domon4接口;
  2. public interface Shape {
  3. public abstract double size();
  4. public abstract void talk();
  5. }
  6. class Line implements Shape {
  7. public double length; //直线的长度
  8. Line(double length){ //定义构造方法
  9. this.length=length;
  10. }
  11. public double size() { //覆写接口Shape中的抽象方法
  12. return length;
  13. }
  14. public void talk() { //覆写接口Shape中的抽象方法
  15. System.out.println("直线的长:"+size());
  16. }
  17. }
  18. class Circle implements Shape {
  19. public double radius; //圆的半径
  20. Circle(double radius){ //定义构造方法
  21. this.radius=radius;
  22. }
  23. public double size() { //覆写接口Shape中的抽象方法
  24. return radius*radius*Math.PI;
  25. }
  26. public void talk() { //覆写接口Shape中的抽象方法
  27. System.out.println("圆的面积:"+size());
  28. }
  29. }
  1. package Domon4接口;
  2. public class test {
  3. public static void main(String[] args) {
  4. Shape line=new Line(6); //实例化子类对象
  5. line.talk(); //调用被覆写过的方法
  6. Shape circle=new Circle(2); //实例化子类对象
  7. circle.talk(); //调用被覆写过的方法
  8. }
  9. }

(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. qt5---事件过滤器

  2. Spring MVC遭遇checkbox的问题解决方案

    转:http://lavasoft.blog.51cto.com/62575/1407213 Spring MVC遭遇checkbox的问题是:当checkbox全不选时候,则该checkbox域的变 ...

  3. Nowcoder Two Graphs ( 图的同构 )

    题目链接 题意 : 给出两幅顶点数一样的图 G1.G2 ,现在要求在 G2 中选出一些边集.使之构成一幅新的图 G ,要求 G 要与 G1 同构,现在要你统计合法的 G 有多少种 分析 :  图的同构 ...

  4. selenium实现chrome分屏截图的合并

    selenium的截图功能在chrome下无法实现,但是可以操作滚动条来一屏一屏的截图,然后再合并成一张图,合并图片的代码在网上找的,十分感谢那位朋友,具体解决方案如下:直接上代码: def capt ...

  5. python web Tornado框架

    1.Tornado Tornado:python编写的web服务器兼web应用框架 1.1.Tornado的优势 轻量级web框架异步非阻塞IO处理方式出色的抗负载能力优异的处理性能,不依赖多进程/多 ...

  6. CentOS7 服务器上如何安装python3

    1.官网下载python3的源码包 网址:https://www.python.org/ 进去之后点击导航栏的Downloads,也可以鼠标放到Downloads上弹出菜单选择Source code, ...

  7. mysql 日期转换sql函数

    mysql提供了两个函数: from_unixtime(time_stamp)   ->  将时间戳转换为日期 unix_timestamp(date)             ->  将 ...

  8. linux下安装R第三方包forecast

    ERROR: [root@localhost soft]# R CMD INSTALL curl_3.1.tar.gz WARNING: ignoring environment value of R ...

  9. spark 笔记 7: DAGScheduler

    在前面的sparkContex和RDD都可以看到,真正的计算工作都是同过调用DAGScheduler的runjob方法来实现的.这是一个很重要的类.在看这个类实现之前,需要对actor模式有一点了解: ...

  10. vmx转换ofv模板,导入esxi

    使用VMware Workstation安装目录下\OVFTool文件的ovftool.exe工具: 转换示例: 首先进入OVFTool根目录.然后执行 ovftool.exe "D:\ce ...