1. 本周学习总结

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

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

  • 关于多态,多态性就是相同的形态,不同的定义。在简单点说的话就是不同类的对象对同一个消息作出的相应,举个栗子来说,比如说在操作电脑的时候,在PPT下按F1就是帮助与问答,在Eclipse下就会弹出控制台的帮助文档,同一个事件发生在不同的对象上面会产生不同的结果。多态的实现是仰仗于动态绑定,通过判断对象的实际类型,调用相应的方法。
  • 关于instanceof运算符,可以判断父类所引用的对象的实际类型,如果xxx instanceof xxxx 则会返回true,这个在后面进行强制转换时是很有用的。
  • 类型的转换不可以随意进行,是不安全的,只能在继承层次内进行类型转换,安全的强制转换类型方法是通过instanceof 进行转换。

2. 书面作业

1.注释的应用

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

首先是类的注释:

然后是方法的注释:

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

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

答:首先,要装成想要买书的样子,所以我上了亚马逊,输入了亚马逊的域名:

之后就要输入你的亚马逊账号和密码了(之前已经登录过了就不在退出和登陆了我怕忘记密码hhh)

然后这边当然是要假装一下要买java的书了!在搜索栏中输入java,在搜索栏中会跳出许多java类的指导书供选择

然后选择一本正在满减的书 java编程思想第四版! 在上面会贴有作者、价格等等本书的消息,下面还有选项可以加入购物车或者加入心愿单

这时候,我假装很喜欢这本书就把它加入了购物车,并且选择了货到付款

然后我十分肯定及确定想要这本书了,就要结账的时候,发现没钱,就把该书从购物车删除了,剧情结束

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

答:

2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)

答:进入Amazon网站之后,在网页中有可以查看商品、查看购物车、查看心愿单等方法类:

public class Amazon{
    public void UserLogin(User);        //登录用户类
    public void ShowShoppingCart(Cart);        //购物车类
    public void ShowWishes(Wishes);        //心愿单类
}

登录类中:

public class UserLogin(){
private Sring UserName;        //用户名
private String PassWord;        //密码
}

购物车中:

public class ShowShoppingCart(){

public void add(){
/*
 *实现购买商品的增加
*/
}

public void delete(){
/*
 *实现购买商品的删除
*/
}

 public void purchase(){
/*
 *实现购买商品的购买
*/
}

(心愿单类与购物车类类似    不完善的不完善的... ... )

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

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

class Manager extends Employee
    {
public Manager(String n, double s, int year, int month, int day)
   {
    super(n, s, year, month, day);
    bonus = 0;
   }

   public double getSalary()
   {
      double baseSalary = super.getSalary();
      return baseSalary + bonus;
   }

在Manager类中,getSalary()前面使用了super,直接复用了父类的代码,构造函数Manager与Employee共同具有的属性是name,salary,hireday。

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

  • 在部分的同名方法中,可以通过区分参数列表的方式来区分两个方法
  • 一般区分父类和子类的两个方法,主要是通过判断方法前面是否有super来判断,父类的关键字是super。

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

文件中第26行前后代码为:

    for (Employee e : staff)
    System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());

通过代码中可以看出staff被创建为Employee类,所以26行的e.getSalary()是调用Employee类的方法。

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

答:我认为使用super调用父类函数可以用简单的一行继承相同的函数,可以大大减少代码的数量,提供写代码时候的效率。如果直接将父类构造函数中的相关代码复制粘贴到Manager中,看起来是比较直观,但是重复读取一串代码降低了代码的可读性,会使代码变得冗长,显得很low。

4.Object类

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

public class HTL {
    public static void main(String[] args) {
        System.out.println(new Fruit());
    }
}
class Fruit{
    private String  name;
}

运行结果为:Homework.Fruit@139a55

由于该类没有继承任何父类,所以系统自动默认继承Object类。当直接输出某个对象的时候,会调用toString()的方法。

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

public class HTL {
    public static void main(String[] args) {
        System.out.println(new Fruit());
    }
}
class Fruit{
    private String  name;
    public String toString(){
    return "hhhhhh";
    //return super.toString();    如果复用父类的话则加super
}

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

public class HTL {
    public static void main(String[] args) {
        System.out.println(new Fruit());
    }
}
class Fruit{
    private String  name;
    public boolean equals(Object obj) {
    return (this == obj);
}
    }

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

5.1画出类的继承关系

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

代码运行结果:

因为Student、Employee、Manager和Programmer这四个类会使用toString()的方法输出成员变量,而Person类是一个抽象类,无法实例化对象,猜测与运行结果一致。

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

作用:调用父类的构造器

不可以将子类中的super构造函数去掉,去掉后编译器会调用父类无参构造器,然而在代码中父类没有无参构造器,所以会出现编译的错误。

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

体现多态的代码:

        for (Person person : peoples) {
            System.out.println(person);
        }

多态的好处:

1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态                                                    性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要
参考链接:https://zhidao.baidu.com/question/522525718170303205.html

关系:

继承:子类继承父类中所以的属性和方法,但是对于private的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。
多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是无法访问的,因为这个时候(编译时)你把他看作父类对象的原因,但是到了运行的时候,编译器就会发现这个父类引用中原来是一个子类的对像,所以如果父类和子类中    有相同的方法时,调用的会是子类中的方法,而不是父类的。
在Java中也可以这么说:编译时看父类,运行时看子类。
参考链接https://zhidao.baidu.com/question/338728339.html?fr=iks&word=java%D6%D0%B6%E0%CC%AC%BA%CD%BC%CC%B3%D0%B5%C4%B9%D8%CF%B5&ie=gbk

本题后两个问来自于网络上面的答案,自己确实想不到网上那么完善,所以就复制上答案,谅解谅解......

3. 码云代码提交记录

4. PTA实验

  • 4-1 使用super调用父类方法即可
  • 4-2 根据题目的要求,依次创建Computer、Double、Integer、String类,然后倒序输出
  • 5-4 通过定义一个父类Shape,让子类Rectangle与Circle分别继承父类

201521123112《Java程序设计》第4周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

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

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

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

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Luogu P3367 【模板】并查集

    题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入输出格式 输入格式: 第一行包含两个整数N.M,表示共有N个元素和M个操作. 接下来M行,每行包含三个整数Zi.Xi.Yi 当Zi=1 ...

  2. 王佩丰第一讲 认识excel笔记

    改变工作表表浅颜色 批量插入工作表 选择多张工作表然后插入 找到表格边界区域快捷键(找到表格的最后一行):快速到达最上下左右端 点击边框上下左右双击 从指定的位置开始冻结窗格 输入今天的日期 快捷键c ...

  3. C#多线程的用法4-线程间的协作lock快捷方式

    线程间协作还可通过lock(加锁)方式进行,lock属于C#的Monitor语法糖(Monitor后续讲解).使用简单快捷,如下: /// <summary> /// 多线程协作-lock ...

  4. 一步步学习操作系统(1)——参照ucos,在STM32上实现一个简单的多任务(“啰里啰嗦版”)

    该篇为“啰里啰嗦版”,另有相应的“精简版”供参考 “不到长城非好汉:不做OS,枉为程序员” OS之于程序员,如同梵蒂冈之于天主教徒,那永远都是块神圣的领土.若今生不能亲历之,实乃憾事! 但是,圣域不是 ...

  5. js prototype属性,类似.net扩展方法

    prototype 属性使您有能力向对象添加属性和方法. 类似.net扩展方法 定义: String.prototype.toWeekName = function () { var newDate ...

  6. Json安全

    1.不要使用顶级JSON数组,避免被<script>标签引用. 2.使用POST+密钥获取JSON,尽量不要用GET方式. 3.不要使用eval()将对象放入内存,eval()会执行所传入 ...

  7. VMware Workstation 12 Pro 之安装林耐斯优麒麟 X64-UI系统

    VMware Workstation 12 Pro 之安装林耐斯优麒麟 X64-UI系统... ------------------------------- -------------------- ...

  8. 8.8.2 Final关键字

    final表示不可改变的含义   1.采用final 修饰的类不能被继承 2.采用final 修饰的方法不能被覆盖 3.采用final 修饰的变量不能被修改 4.final修饰的变量必须显示初始化(该 ...

  9. Android SharedPreferences基本用法

    使用SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类, 用来保存应用的一些常用配置. SharedPreferences与Editor简介 ...

  10. WP开发图片保存到独立存储并从独立存储中读取

    需要添加引用命名空间 using System.IO; using System.IO.IsolatedStorage; 1.将图片保存到独立存储空间 using (IsolatedStorageFi ...