201521123088《java程序设计》第四次总结

1. 本周学习总结

1.1 尝试使用思维导图总结有关继承的知识点。

1.11.2 使用常规方法总结其他上课内容

1.多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。

2.final关键字:1)修饰类。该类将不能被继承也就是不能派生子类。2)修饰方法。这个类的子类将不能重写该方法。3)修饰变量。final修饰的变量一旦被赋值,其值不能被改变。

2. 书面作业

1.注释的应用

使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)

答:注释的插入:
注释以/开始,以/结束
类注释

/*
*你要注释的内容
*/

2.面向对象设计(大作业1,非常重要)

2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)

上课需要离散数学的书,于是便去了淘宝看一看,在搜索框输入“离散数学”,

出来了很多版本的书,我看了一下,选择了自己需要的版本,点击加入购物车,然后结账。

2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
这个系统是操作者在使用,具体关系如下图:

3.ManagerTest.zip代码分析

分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。

答:复用的属性:
name(String)
salary(double)
hireDay(Date)
复用的方法:
public Employee(String n, double s, int year, int month, int day)
public double getSalary()
还有一系列的Getter和Setter方法

3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?

答:用super.getSalary();表示父类Employee的方法

用对象名(Manager类).getSalary();表示子类的方法

3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。

答:对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法,在这里是两个都有调用

3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?

答:这样可以减少代码的重复,是代码看上去简单明了,也减少了工程量如果把代码直接复制粘贴上去,代码显得冗长

4.Object类

4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?

因为输出一个对象,实则输出toString方法,所以提中是调用Fruit类的toString方法。该代码来自Object类, 该代码输出了该对象的地址。

4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
其父类中的toString方法还在,若是同时想要复用父类的toString方法,用super关键字,代码如下:

public String toString() {
        return super.toString();
    }

4.3 Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)
Object类的eqauls方法:比较两个对象是否相等

public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Fruit other = (Fruit) obj;
        if (name.equalsIgnoreCase(other.name))
            return true;
        return false;
    }   

运行结果截图:

4.4 在4.3的基础上使用ArrayList

原理:将ArrayList中的元素一个一个的与待比较的字符串用equals方法进行比较

public static void main(String[] args) {
     ArrayList array=new  ArrayList();
     Scanner in = new Scanner(System.in);
     int n=in.nextInt();
     Fruit []fruit=new Fruit[n];
     for(int i=0;i<n;i++){
         String str=in.next();
         fruit[i]=new Fruit(str);
         if(!array.contains(fruit[i])){
             array.add(fruit[i]);
         }
     }
     for (int i = 0; i<array.size(); i++) {
         System.out.println(array.get(i));

    }
     System.out.println();
}

运行界面:

5.代码阅读:PersonTest.java(abstract、多态)

5.1 画出类的继承关系

5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++)
                if (peoples[j].getAge() > peoples[j + 1].getAge()) {
                    Person temp = peoples[j];
                    peoples[j] = peoples[j + 1];
                    peoples[j + 1] = temp;
                }
        }

这几行代码是比较对象的年龄,将对象以年龄从小到大进行排序,再将对象按排好的顺序输出

5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?

子类中的super构造函数是为了调用父类的构造函数,且不能将子类中的super构造函数去掉,这样的话子类会自动调用父类的无参构造函数,而父类中没有无参构造函数,显然,这样的话容易出错

5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?

子类继承父类是多态的一种体现,toString方法也体现了一种多态
多态可以减少代码的重复

3. 码云代码提交记录

4. PTA实验

①要用到super()去调用父类中构造的函数,不然子类是无法去继承父类中构造的函数的。

②抽象类的定义,用到abstract关键字,且抽象类是必须被继承的,在求周长和 和 面积和就可以在抽象类中定义,求周长和 和 面积和的方法代码一样,可以在抽象类Shape中编写

③可以通过Eclipse中自动生成的代码完成大半。

时间: 2024-10-11 06:43:25

201521123088《java程序设计》第四次总结的相关文章

Java程序设计第四次实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:java程序设计 班级:1352  姓名:何伟钦  学号:20135223 成绩:            指导教师:娄嘉鹏      实验日期:2015.6.10 实验密级:       预习程度:           实验时间:15:30---17:20 仪器组次:23       必修/选修:选修   实验序号:05 实验名称:网络编程(简单的服务器与客户端) 实验目的与要求: 1.掌握Socket的基本使用方法,学

20145320《Java程序设计》第3周学习总结(第四章)

20145320<Java程序设计>第3周学习总结(第四章) 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制 从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象 从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction) 类是对象的设计图,对象是类的实例,生成对象要先定义类 4.1 类与对象 定义类使用c

2018-2019-2 20175105王鑫浩《Java程序设计》实验四 《Android开发基础》实验报告

实验四 <Android开发基础> 实验报告封面 课程:Java程序设计 班级:1751班 姓名:王鑫浩 学号:20175105 指导教师:王鑫浩 实验日期:2019年4月29日 实验时间:--- 实验序号:实验三 实验名称:敏捷开发与XP实践 实验要求 参考Android开发简易教程 完成云班课中的检查点,也可以先完成实验报告,直接提交.注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明.实验报告中一个检查点要有多张截图. 发表实验报告博客,标题"学期(如2018-20

2016701010126 2016-2071-2 《java程序设计》一至四章总结

这是课堂的最后一个编程题,我课堂上这样写: package book; public class Book {    public static void main(String[] args)    {     Books[] books=new Books[3];          books[0]=new Books("Java程序设计",119.00);     books[1]=new Books("C语言程序设计",72.50);     books[2

201671010110 2016-2017-2《java程序设计》

第四周的java学习也已经过去了,这学期新的编程语言老师翻转课堂新的教学方法都是一种全新的挑战与学习的过程.四周时间也学了四个章节的内容,前三章内容和c语言有很多的相似之处,经过上学期对c的学习理解前三章内容不是很难,第四章的类与对象是一个很重要的章节当然也有一定的难度,老师在周四周五的课堂上也对前四章内容做了复习,讲了很多习题.周末对第五章的内容通过幻灯片有了一定的学习了解. 继承它是用已有类来构建新类的一种机制.当定义了一个新类继承了一个类时,它继承了这个类的方法和域,同时在新类中添加了新的

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

java程序设计题库

选择题 答题要求:单选题,每题只有一个正确答案,选择正确给分,不正确不给分. 1. 下面(   A    )数据类型可用于main()方法中传递的参数 A.String   B.Integer   C.Boolean   D.Variant 2.以下的选项中能正确表示Java语言中的一个整型常量的是(    B   ) A.12. B.-20   C.1,000     D.4 5 6 3.下列的变量定义中,正确的是(   D    ) A.boolean b1="true";   B

20145225《Java程序设计》 2015—2016年学期课程总结

20145225<Java程序设计> 2015—2016年学期课程总结 读书笔记链接汇总 1.2016年2月25日 <Java程序设计>课程准备之问卷调查 摘要: 一.你对自己的未来有什么规划?做了哪些准备? 答:未来就是找个好工作,在保证自己与父母生活条件良好的基础上,进一步的提高精神上的需求...... 2.2016年3月6日 <Java程序设计>第1周学习总结——小试牛刀 摘要: 教材学习内容总结 1.java语言概述:一门高级编程语言. 2.java语言的三种技

20145331《Java程序设计》课程总结

20145331<Java程序设计>课程总结 每周读书笔记链接汇总 •20145331<Java程序设计>第一周学习总结 •20145331<Java程序设计>第二周学习总结 •20145331<Java程序设计>第三周学习总结 •20145331<Java程序设计>第四周学习总结 •20145331<Java程序设计>第五周学习总结 •20145331<Java程序设计>第六周学习总结 •20145331<Java

20145301《Java程序设计》实验报告一:Java开发环境的熟悉

20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中可以得到什