• 201521123051 《Java程序设计》第4周学习总结


    1. 本周学习总结

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

    使用工具:百度脑图

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

    多态的定义:父类的引用指向子类的对象。
    父类的引用:一是指父类变量指向的那个内存空间
                二也是指父类自由的类型信息表,这个表示任何对象都具备的,和继承多态无关。
    子类的对象:
               一是指子类的那个堆内存空间。
               二也是指子类的那个类型信息表。
    

    2. 书面作业

    1.注释的应用

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

    类注释

    方法注释

    1、单行注释:“//……”(快捷键 ctrl + shift  + c)
    
    2、块注释:“/*……*/”(快捷键trl + shfit + /)
    
    3、文档注释:“/**……*/”(不清楚快捷键,,希望赐教)
    
    4、 注释标签语法
    
    @author   对类的说明 标明开发该类模块的作者
    
    @version   对类的说明 标明该类模块的版本
    
    @see     对类、属性、方法的说明 参考转向,也就是相关主题
    
    @param    对方法的说明 对方法中某参数的说明
    
    @return   对方法的说明 对方法返回值的说明
    
    @exception  对方法的说明 对方法可能抛出的异常进行说明
    
    

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

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

    ①进入淘宝网站,账号密码登录
    ②找宝贝、确定宝贝
    1、搜索自己想要买的东西。点击自己选中的商品,这时可以询问卖家一些问题,比如价格呀,运费呀,质量呀,售后呀等等问题。
    2、点击“加入购物车”,选择颜色,尺寸,数量等商品属性
    3、点击“确定”。
    ③付款
    1、进入“我的购物车”,选中商品。
    2、点击“结算”,选择“支付宝帐户余额支付”,若支付宝没余额,就选择“网银支付”。 支付宝的付款方式很多的,比如合作网点、邮政、网银、信用卡等等,很方便的。
    3、再输入支付密码,点“确定”就ok了!
    
    

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

    系统中包含的类:①User类(属性,Username & Password)  ②CommodityLibrary类(Commodity)  ③search类(Commodity)  ④ShoppingCart类(Commodity&Number等等) ⑤payment类(Paymentmethod & Paymentpassword) ⑥Commodity(Size &Color& Number等等)
    

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

    3。ManagerTest.zip代码分析

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

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

    Employee类中的getSalary()方法自然是父类的(也许父类可以调用子类方法,但应该有关键字之类的)。Manager类中的getSalary()方法自然是子类的,super.getSalary()【关键字super】自然表示调用父类的getSalary()方法。
    

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

    是调用Manager类的getSalary方法
    

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

    把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来更直观,但是代码变得冗长,不如用super调用父类方法。

    4.Object类

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

    class Fruit {
        private String name;
    }
    
    public class Main {
        public static void main(String[] args) {
            System.out.println(new Fruit());
        }
    }
    
    将输入的Object类的对象的值转换成了字符串,输出。
    

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

    父类中的toString方法并不会消失,为Fruit类添加了toString()方法,系统会优先调用其方法。
    
    class Fruit {
        private String name;
        public String toString() {
            return super.toString();
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            System.out.println(new Fruit());
        }
    }
    
    使用super关键字即可复用其父类的toString方法
    
    

    4.3 Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)
    4.4 在4.3的基础上使用ArrayList fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的contatins方法是如何实现其功能的?

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

    5.1 画出类的继承关系

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

    运行结果

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

    使用super关键字调用父类。
    不能将子类中的super构造函数去掉

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

    多态的体现

    多态的好处

    可以增强程序的可扩展性及可维护性,使代码更加简洁。
    不但能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。
    
    

    多态与继承关系

    多态是:一个对象可以被多个其他对象动态调用
    继承是:一个子类可以继承父类的属性,和方法
    没有封装就谈不上继承,而没有继承,就不可能有所谓的多态。
    而理解封装、继承和多态(特别是多态)是理解设计模式的基础。
    

    3. 码云代码提交记录

    在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

    4. PTA实验

    实验总结

    通过这次编程和上机实验学到了挺多内容的,对于继承和多态的体会更加深刻了。原来都只是理论上的学习,操作的时候还真无从下手。实验做完,还是有很多不懂得地方,希望能够尽快把问题解决好。
    掌握了方法的覆盖、重载,掌握抽象类和接口的使用。对于Java语言有了更深一层的认识,多态与继承、方法重写密切相关,我们在方法中接收父类类型作为参数,在方法实现中调用父类类型的各种方法。当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建的对象类型,调用子类中相应的方法。
    
  • 相关阅读:
    python爬虫requests json与字典对象互相转换
    python爬虫requests的使用
    Django 使用celery任务队列的配置
    Django实现发邮件
    leetcode算法:Two Sum II
    Python中使用hashlib进行加密的简单使用
    leetcode算法: Average of Levels in Binary Tree
    Django中自定义过滤器的使用
    linux下git常用命令
    cocos2d-x 父节点和子节点执行不同动作
  • 原文地址:https://www.cnblogs.com/xqy123/p/6561598.html
Copyright © 2020-2023  润新知