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


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


    1. 本周学习总结

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

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

    ●总结:

    (1)在本周的学习中,我知道了在类的定义里,类名的首字母一定要大写。

    (2)我学会了类注释的使用方法是:

    /**

    *(要注释的内容)

    */

    (3)在本周的第二节课中学习了Object类,学会了覆盖equal方法。

    (4)还学习到了抽象类以及抽象方法的使用格式。

    2. 书面作业

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


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

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

    故事:有一天,张同学打开了网上购物商城,在搜索栏中输入了“杯子”二字之后,再点击搜索,跳出了一个新的页面框,在其中的众多杯子中挑出了一个自己最喜欢的,点击该商品进入后宝贝详情界面后,仔细看了一遍,决定购买,然后点击加入购物车,接着进入购物车结算,在结算页面中,他核对了总计金额之后,点击了付款,并完成了此次购物。
    

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

    答:张同学在用这个系统。
      系统中包含的类有:商品和购物车。
      商品类中包含的属性是名称、价格、颜色分类、基本信息、买家评价。
      商品类中包含的方法是选择颜色和加入购物车。
      购物车类中包含的属性是:商品名称、单价、数量、金额、合计费用。
      购物车类中包含的方法是删除商品、选中商品、结算。
      商品类与购物车类之间的关系:在某商品的宝贝详情页面中点击加入购物车后(使用了商品类中的加入购物车的方法),点击购物车,就进入了购物车的界面。
    

    (3)ManagerTest.zip代码分析

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

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

    答:以下这段代码使用继承实现代码复用:
    class Manager extends Employee
    {
    /**
    * @param n the employee's name
    * @param s the salary
    * @param year the hire year
    * @param month the hire month
    * @param day the hire day
    */
    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;
      }
      public void setBonus(double b)
      {
      bonus = b;
      }
      private double bonus;
      }
      在这段代码中子类Manager继承了父类Employee,用到了public Employee(String n, double s, int year, int month, int day)方法,并且用了name、salary、hireday属性。
    

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

    答:Employee类是父类,所以它的getSalary方法在被使用时要表示为super.getSalary(),以此来区别子类Manager中的getSalary方法。
    

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

    答:调用的是Employee类的getSalary方法。因为e是Employee类的,所以e.getSalary()调用的是父类的方法。
    

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

    答:Manager类的构造函数使用super调用父类的构造函数实现了代码复用,避免了代码的大量重复,并且能使代码简洁明了,如果代码需要修改的时候就不会那么麻烦了。把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,如果需要修改代码的时候就要一直寻找相同的地方不断修改,很麻烦。
    

    (4)Object类

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

    答:调用了默认的object类,object是所有类的父类,该方法的代码是来自系统默认的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方法的功能:用于比较两个对象是否指向同一块内存区域,相当于==运算符。
    
         @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Fruit other = (Fruit) obj;   
            if (name.equals(other.name))
                return true;
        }
    

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

    答:equals方法的功能:用于比较两个对象是否指向同一块内存区域,相当于==运算符。
    

    3. 码云代码提交记录

    4. PTA实验总结

    ●在做PTA中的函数题第一题时,刚开始写的特别复杂,出现了编译错误,然后修改成了public String toString()就提交成功了。

    ●函数题的第一题和第二题难度都不是很大,第二题中只要正确理解了Object类就会做了。

    ●编程题的第四题需要学会运用继承的知识点,虽然理论是会了,但是在编程的时候还是不太会用,最后把代码打出来了,但是在PTA上运行不通过。

    ●编程题的第五题是要用到覆盖的知识,但是和做第四题的时候一样,也是在Eclipse上能运行成功,但是在PTA上运行不了。

  • 相关阅读:
    自动化运维工具——ansible剧本playbook(三)
    自动化运维工具——ansible系列命令
    自动化运维工具——ansible命令使用(二)
    自动化运维工具——ansible安装入门(一)
    SSH密钥验证
    es中的或加should
    es聚合后比较结果显示
    es聚合having count>0
    类的内部调用和多线程调用解决事务、aop失效的问题
    es注意点
  • 原文地址:https://www.cnblogs.com/yjliao/p/6547449.html
Copyright © 2020-2023  润新知