1. 本章学习总结

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

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

为了不必要写重复的代码,可以运用继承,用关键字extends来定义一个类,被继承的类叫做父类,继承的类叫做子类,并且只能有一个父类。父类中的属性和方法子类可以引用,子类也可以建立自己的方法,但是父类不能引用。仔类的继承中,object是所有类的父类。 父类的初始化操作总是早于子类!对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法。通过 instanceof 可以判断父类引用所引用的对象实例的实际类型。

  1. 书面作业

    Q1. 1.注释的应用。使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。

    答:

注:使用eclipse生成html格式注释文档javadoc

选中项目->export->Java->javadoc->next->configure->选中jdk安装目录(不知道在哪可以通过everything输入javac.exe查找)->bin->javadoc.exe->next->Document Title任意取名->next->vm options中设置编码->finish

Q2.面向对象设计

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

答:假如我要买一本java的辅导书,首先我得打开手机购物APP登陆账号,在总的商城中搜索java书关键字进行查找,这时候会出现各种不同类型的有关java的辅导书(如java编程思想,javascript或者是java基础习题集等)此时可以根据自己的需要,进一步完善关键字,缩小搜索范围,查询自己想要的书(如java编程思想)。通过排序(按照价格高低排序显示或者按照销量高低排序)在这些同样的书中进行筛选,最终找到一个自己想要物美价廉的书。然后将该本书加入购物车,输入收货人,地址,联系电话等信息确认订单,在线付款后提交订单。

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

ManagerTest.zip代码分析

分析ManagerTest.zip中的代码,回答几个问题

3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。

在这段代码中子类Manager继承了父类Employee,用到了public Employee(String n, double s, int year, int month, int day)方法,并且用了name、salary、hireday属性。

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

通过变量的定义来区分,如果变量是由Employee定义,则运用Employee类,Manager亦如此;

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

调用的是Employee类的getSalary方法。

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

可以避免大量代码的重复,如果后期需要修改,则需要对用到父类方法的地方一一修改,会很麻烦。

Object类

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

object是所有类的父类,如果没有extends,则继承了object,调用了object的 toString()的方法,该方法的代码是来自系统默认的java.lang包中,可以传递任何类型的类来使用。

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

父类中的toString方法的代码还在,如果同时想要复用其父类的toString方法,可以用super来调用,也可以在创建对象的时候就定义为父类的,就可以调用父类的toString方法了。

~~~

public string toString(){

return super.toString();

}

~~~

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

equals方法的功能:用于比较两个变量是不是指向同一个对象,相当于 == ;

~~~

public boolean equals(Fruit f1,Fruit f2){

if(f1.name==f2,name)

retun true;

else

return false;

}

~~~

4.4 在4.3的基础上使用ArrayList

}

else{

fruiList.add(f);

}

}

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

5.1 画出类的继承关系

答:

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

答:Person类是一个抽象类,无法实例化对象,因此只需分析Student类,Employee类,Manager类和Programmer类(其中student类和employee类继承person类,manager类和programmer类继承employee类)而这四个类都是各自输出自己特有的成员变量,然后利用super关键字调用父类的toString()方法,得出运行结果。

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

答:作用:调用父类的构造方法。此时不能将子类中的super构造函数去掉,理由是因为在子类的构造方法中一定会调用父类的某个构造方法。如果去掉super,在实例化子类对象时会自动调用父类的无参数的构造函数。而该例中父类中没有无参数的构造函数,此时会出现错误。

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

答:

(1)

for (Person person : peoples) {

System.out.println(person);

}//体现多态

(2)

在我看来现在“多态”有两点好处给我留下了深刻的体会:1)在编写程序的时候,不需要为每一个新构建的类编写功能调用,在一定的情况下,只需要对现有的类进行处理即可。这点大大提高了代码的可复用性。(2)同样的,使用父亲类型的变量也可以引用子类对象,并根据被引用的子类对象的特性,得到不同的运行结果,这使得代码的编写变得灵活,可以提高可扩充性和可维护性。

当然多态的好处不止这2点,这里给予补充:

  • 可替换性。多态对已存在的代码具有可替换性。
  • 可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际 上新加子类更容易获得多态功能。  
  • 接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。  
  • 灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。  
  • 简化性。多态简化了对应用软件的代码编写和修改过程。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定

    (3)多态和继承的关系:首先是继承指的是在现有的一个类的基础上去构建一个新的类,构建出来的新的类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在有了父类和子类的关系的基础上,子类可以调用甚至是重写父类的方法,而当调用父类的方法名和子类中的方法名相同时要根据对象类型来判断选择哪个方法,此时产生不同的运行结果即多态。

201521123086《java程序设计》第四周的更多相关文章

  1. Java程序设计第四周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...

  2. 20145213《Java程序设计》第四周学习总结

    20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...

  3. 20145330《Java程序设计》第四周学习总结

    20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...

  4. 20145337《Java程序设计》第四周学习总结

    20145337<Java程序设计>第四周学习总结 教材学习内容总结 继承与多态 继承 继承,避免多个类间重复定义共同行为 符合DRY(Don't Repeat Yourself)原则,多 ...

  5. 20145218 《Java程序设计》第四周学习总结

    20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...

  6. 《Java程序设计》第四周学习总结

    20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...

  7. 20155304 2016-2017-2 《Java程序设计》第四周学习总结

    20155304 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承: 概念: 面向对象中,为避免多个类间重复定义共同行为.(简单说就是将相同的程序 ...

  8. 201521123061 《Java程序设计》第十四周学习总结

    201521123061 <Java程序设计>第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据 ...

  9. 201521123038 《Java程序设计》 第四周学习总结

    201521123038 <Java程序设计> 第四周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.通过 ins ...

  10. 201521123061 《Java程序设计》第四周学习总结

    201521123061 <Java程序设计>第四周学习总结 1. 本章学习总结 (1)思维导图: --- (2)上课内容总结: 第四周学习了Java中的继承与多态,思维导图中已经给出了本 ...

随机推荐

  1. Linux系统常见调用及其分类

    Linux系统调用主要可以分为以下几类: 进程控制  fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 中止进程 _exit 立即中止当前进程 get ...

  2. 如何搭建个人博客网站(Mac)

    一直以为自己记忆力很好,毕业之后才发现,之前需要看一遍就能记住的东西,现在看两三遍才能有印象.而搞技术的,如果不及时的记录下当时的情景,过后很容易就忘记.所以,再次萌生了搭博客.写文章的想法(之前用D ...

  3. 设计模式(7)--Bridge(桥接模式)--结构型

    1.模式定义: 桥接模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥接模式的用意是“将抽象化(Abstraction)与实现化(Impleme ...

  4. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(三)用户接口层之RTSP命令

    截至版本1.2.3,myRtspClient函数库共支持以下6个RTSP命令: (1)OPTIONS (2)DESCRIBE (3)SETUP (4)PLAY (5)PAUSE (6)TEARDOWN ...

  5. 设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用

    ,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list()           测试此抽象路径名表示的 ...

  6. Spring框架——批处理(batch)和事务(Transaction)

    批处理(batch) 批处理(batch)------------>好比快递员[不能一件一件的送快递] - 批处理指的是一次操作中执行多条SQL语句 - 批处理相比于一次一次执行效率会提高很多 ...

  7. 记录-新建一个web应用的过程与曲折

    第一步/ 打开eclipse,菜单栏下,File–New–Other-,打开后找到web–Dynamic Web Project,然后单击Next. 解释一下,Dynamic ,动态的,变化的,Dyn ...

  8. SoapUI进行接口测试,怎么应对接口地址总是变化!

    如果是没有代码能力的小白,要利用工具进行接口测试的时候,经常会遇到接口地址或者接口参数变化的问题,然后不得不在他们改了接口之后,就手动去改所有的请求链接地址和接口参数!1-5个请求,我们手动改还应付的 ...

  9. mysql语句的一个问题

    刚才在群里有个同学提出了这么一个问题 在Mybatis的mapper文件中有一条语句这么写 说是系统不报错,也没返回,我一看句子应该没什么问题.执行的时候应该是PreparedStatement 执行 ...

  10. Selenium 学习笔记(一)

    selenium 学习整理 初学者,如果有不当得地方请指出,非常感谢. 准备事项: 1. Python 安装包 安装Python,并勾选添加环境变量. 安装完成后,打开dos窗口,输入python,看 ...