2019JAVA第五次实验报告

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();

原文地址:https://www.cnblogs.com/521-PENG/p/11657535.html

时间: 2024-10-26 19:32:29

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

2019JAVA第五周实验报告

Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.9.24 评分等级 实验三 String类的应用 一.实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 二.实验内容 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) 2.统计该字符串中字母s出现的次数. 3.统计该字符串中子串"is"出现的次数. 4.统计该字符串中单词"is"

java第五次实验报告

20144303<Java程序设计>第五次实验 一.实验要求 运行TCP代码,一人服务器,一人客户端 下载加解密代码,先编译运行代码,一人加密一人解密 集成代码,一人加密后通过TCP 发送,加密使用DES或AES,AES或DES加密密钥Key的发送,使用服务器的公钥加密,公钥算法用RSA或者DH 二.实验步骤 这次实验我和石宇森结对编程,我负责设计客户端的部分. 先获取本机的IP地址,输入cmd,然后输入ipconfig. 客户端代码如下: package net; import java.m

20165210 Java第五次实验报告

20165210 实验五 网络编程与安全 网络编程与安全一: 实验要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java 上传测试代码运行结果截图和码云链接 实验截图: 网络编程与安全二: 实验要求: 结对编程:1人负责客户端,一人负责服务器 注意责任归宿,要会通过测试证明自己

2019JAVA第六次实验报告

Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.18 评分等级 实验四 类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异常类的方法. 实验内容 1.编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常.在catch

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

姓名:蔡金宇 学号:201821121070 班级:计算1813 目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 4. 配置 4.1 配置并激活串行地址和以太网地址 4.1.1 R1 4.1.2 R2 4.1.3 R3 4.1.4 PC 4.2 配置OSPF 4.2.1 R1 4.2.2 R2 4.2.2 R3 5. 验证参数配置是否正确 5.1 检验IP地址正确并且接口处于激活状态 5.2 任意两台机器能Ping成功 6. 检验OSPF路由 6.1 修改路由ID 6

第五次实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础               班级:1353班 姓名:李雪琦 .王剑桥             学号:20135309.20135316 成绩:            指导教师:娄嘉鹏           实验日期:2015.12.01 实验密级:        预习程度:               实验时间:15:30-18:00 仪器组次:         必修/选修:必修           

信息安全系统设计第五周实验报告

处理器体系结构 一.Y86指令集体系结构 1.Y86是一个指令体系结构(ISA),它是计算机系统这本书的作者YY出的指令集.目的是为了让我们更加清晰的了解ISA. 2.Y86指令集: 3.Y86异常:Y86有四种不同的状态码,AOK(正常).HLT(执行halt指令).ADR(非法地址)和INS(非法指令). 二.HCL 1.组合电路和HCL布尔表达式 组合电路:讲很多的逻辑门组成一个网,就能构成计算块. 构建这些网有两条限制: ①两个或多个逻辑门的输出不能连接在一起,否则他们可能会使线上的信号

LINUX第五次实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                     班级: 201353 姓名:刘世鹏 郝爽 学号:20135304 20135335 成绩:             指导教师:   娄嘉鹏  实验日期:2015.12.1 实验密级:         预习程度:             实验时间:15:30~18:20 仪器组次:          必修/选修:       必修          实验序号:5

20165337第五周实验报告

一.命令行下Java程序开发 1.输入mkdir指令建立文件夹. 2.输入javac -d . 目标文件夹/类名.java编译文件 3.输入javac 包名.类名运行文件 程序运行结果如下: 二.使用IDEA调试程序 1.编写程序及运行 2.依次向下单步调试 3.在循环内调试 4.调试过程中,语句只运行一次 三.编写并且调试运行程序 1.实验题目:实现简单四则运算(能支持分数,加减乘除,支持括号) 2.代码编写: import java.io.BufferedReader; import jav