zoukankan      html  css  js  c++  java
  • 201521123119《Java程序设计》第4周学习总结

    1. 本周学习总结

    2.书面作业

    1.注释的应用

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

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

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

    • 这几天需要买一把伞,点开购物网站,看到有许多商品类别,搜索雨伞,搜索结果出现了许多不同价格不同款式的雨伞,选择一把伞添加到购物车,购物车里有几件商品是之前选的,点击全选,付款。

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

    3.ManagerTest.zip代码分析

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

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

    class Manager extends Employee

    • 体现继承代码复用,Manager继承了Employee的public Employee()等方法,name、salary等属性

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

    • 编译器搜索getsalsry签名的类就可区分这两种方法。

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

    • 由e类可知,调用的是Employee类的getSalary方法。

    3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到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的toString()方法,没有extends自任何类的话是默认继承Obiect类。

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

    class Fruit{
        private String name;
    
        public String toString() {
            return "apple";
        }
    }
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println(new Fruit());
    
        }
    
    }
    

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

    4.4 在4.3的基础上使用ArrayList fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的contatins方法是如何实现其功能的?

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

    5.1 画出类的继承关系

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

    Manager [bonus=12000.3, toString()=Employee [salary=90000.1, toString()=Person [name=Clark, adress=GE, phonenumber=111, email=111@mail.com, age=10,    gender=mail]]]
     Student [status=1, toString()=Person [name=wang, adress=110, phonenumber=15959, email=15959@163.com, age=18, gender=male]]
     Employee [salary=1000.0, toString()=Person [name=zhang, adress=136, phonenumber=1360, email=1360@mail.com, age=21, gender=female]]
     Programmer [allowance=50000.0, toString()=Employee [salary=100000.0, toString()=Person [name=Gates, adress=usa, phonenumber=911, email=911@com, age=59,     gender=male]]]
    
    • Person是abstract类,没有实例的对象。

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

    • 作用是调用父类的方法。去掉会出现编译出错。

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

        for (Person person : peoples) {
            System.out.println(person);
            }
    
    • 体现了多态,多态有可替换性、可扩充性、灵活性等的好处。
    • 关系:子类继承父类中所以的属性和方法,实现代码的复用,方法的重写、覆盖;多态即父类引用可以持有子类对象。
    1. 码云代码提交记录

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

    题目集:jmu-Java-03-面向对象1-基础-封装继承 中的
    函数(4-1, 4-2, 4-3,4-4较难选做)
    编程(5-4, 5-5, 5-6)
    一定要有实验总结

    • 使用super可以访问父类被子类隐藏的同名的成员
    • 熟悉了继承、覆盖、复用的用法
  • 相关阅读:
    HDU 4492 Mystery (水题)
    UVA 10480 Sabotage (最大流)
    POJ 2446 Chessboard (二分匹配)
    VS2008下用MFC 的MSComm控件编写串口程序
    退役了~~~
    STL Algorithms 之 unique
    cocos2d中CCCallFuncND传参数的注意事项
    好太太晾衣架市场价格表(仅供参考)
    Linux VNC黑屏(转)
    C++ TinyXml操作(含源码下载)
  • 原文地址:https://www.cnblogs.com/ll321/p/6575600.html
Copyright © 2011-2022 走看看