zoukankan      html  css  js  c++  java
  • 20155205 2016-2017-2 《Java程序设计》第4周学习总结

    20155205 2016-2017-2 《Java程序设计》第4周学习总结

    教材学习内容总结

    第六章

    • private成员会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取(若父类愿意提供访问)。
    • 检查语法的逻辑是否正确,方法是从=右边往左读:右边是不是一种左边呢?例如:运用is a关系。
    • 多态 :使用单一接口操作多种类型的对象,例如p165中的代码
    showBlood(swordsMan);
    showBlood(magician);
    
    • 权限关键字与范围

    • 如果子类构造函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数。
    • 如果想执行父类中某构造函数,可以使用 super() 指定。如
    class Some {
        Some(){
            System.out.println("调用Some()");
        }
        some(int i){
            System.out.println("调用Some(int i)");
        }
    }
    class Other extends Some{
        Other(){
            super(10);
            System.out.println("调用Other()");
        }
    }
    

    :this()与super()只能择一调用,而且一定要在构造函数第一行执行。

    • class前也可以加上final关键字,如果class前使用了final关键字定义,那么表示这个类是最后一个了,不会再有子类,也就是不能被继承。
    • 在Java中中,任何类追溯至最上层父类,一定就是Java.lang.Object.
    • 在学习了重新定义toString()和equals()后,我知道了很多我们直接使用的方法是建立在比较复杂的基础之上的,因此感受到了在庞大的知识面前自己的渺小。

    第七章

    • 对于“定义行为”,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public。类要操作接口,必须使用implements关键字。操作某接口时,对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract。
    • 接口中的方法没有操作时,一定得是公开且抽象,为了方便,可以省略 public abstract。
    • 定义常数可用
    public interface Action{
        int STOP = 0;
        int RIGHT = 1;
        int LEFT = 2;
        int UP = 3;
        int DOWN = 4;
    }
    

    或者使用enum语法:

    public enum Action{
        STOP,RIGHT,LEFT,UP,DOWN
    }
    

    注意:enum实际上定义了类,enum中列举的常数,无法直接实例化,只有在类中才能实例化。

    教材学习中的问题和解决过程

    • 问题1:p173中说“重新定义方法要注意,对于父类中的权限,只能扩大不能缩小”,这是为什么呢?如果缩小了权限会发生什么呢?
    • 问题1解决方案:上网搜索了相关资料。举个例子,在父类中是public的方法,如果子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义。如果缩小了权限,就会发生错误。
    • 问题2:p179中有段代码是
    public void add(Object o){
            if(next == list.length){
                list = Arrays.copyOf(list,list.length*2);
            }
            list[next++]=o;
        }
    

    第五行是什么意思?

    • 问题2解决方案:Object o是分配一个引用,第五行的意思就是把收集到的对象存入list中。
    • 问题3:子类重新定义与父类完全相同的方法这种情况是什么情况?
    • 问题3解决方案:这种情况称为覆盖,此时,子类中已找不到父类原来的方法,它的内存位置已经被替代。
    • 问题4:抽象类和接口的区别是什么?
    • 问题4解决方案:参考博客抽象了和接口的区别,还看到“接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。”也能帮助理解。

    代码调试中的问题和解决过程

    • 问题1:在编译时输入之前的
    javac -d bin  src/Inheritance/Guest.java
    

    出现了下图问题

    • 问题1解决方案:输入以下代码即可,因为没有指明调用的类的位置。
    javac -sourcepath src -d bin  src/Inheritance/Guest.java
    
    • 问题2:在编译p201代码时出现下图问题

    • 问题2解决方案:这样的错误就属于自己不动脑筋的错误,明显之前我没有写Anemone和Shark类,还要人家编译成功--|||。
    • 问题3:在编译p201代码时出现下图问题

    • 问题3解决方案:查看代码发现自己多写了一个abstract

    删去之后重新编译便成功。

    注意:好好理解抽象类只能被继承不能实例化!

    • 问题4:p202的代码编译后出现下图错误

    • 问题4解决方案:文件名与类名字不相符,应该是教材出错了,将类名字更改为Airplane后编译成功。

    代码托管

    • 代码提交过程截图:
      • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图

    • 代码量截图:
      • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

    上周考试错题总结

    • 错题1:填空:Linux Bash中,(grep )命令可以进行全文搜索。
    • 错题2:填空:System.out.println(“”+52+25);的结果是(5225)
      System.out.println(+52+25“”);的结果是(77)

    总结 :若输出引号在前,从左到右,级别相同,表示之后的数字是连接的关系;若输出引号在后,则表示之前的数字先相加再输出。

    • 错题3:填空:两个Integer对象比较大小,可以使用(comareTo())方法
    • 错题4:填空:可以使用java.util.Arrays的(fill())方法把数组初始化成相同的值。

    总结:fill()是一个填充数组的方法,若数组无初始值,就可用此方法初始化。

    • 错题5:填空:Java中的多维数组都是由(一维数组组成)。
    • 错题6:填空:“30”转化为byte类型的30的语句是(Byte.parseByte(“30”);)。

    总结 :使用“类型.parse类型(number)”将字符串剖析为基本类型。

    • 错题7:判断:Java中类总会有默认构造方法。(X)

    总结 :JAVA任何一个类都有一个默认的无参构造函数,除非自己显示定义一个或多个构造函数。

    • 错题8:Java中类的成员变量必须进行初始化,否则会出语法错误。(X)
    • 错题9:填空:Java中成员方法中引用成员变量,要使用(this)关键字。

    其他(感悟、思考等,可选)

    慢慢感觉到很多东西都是有规律的,可能这就是日积月累的过程吧!

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 16/16 1/1 12/12
    第二周 124/140 1/2 19/31
    第三周 501/641 1/3 26/57
    第四周 664/1305 1/4 27/84

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    参考资料

  • 相关阅读:
    Best Practices for Using Alpha
    Android手机 Fildder真机抓包
    Android调用MediaScanner进行新产生的媒体文件扫描
    读书笔记-----Java并发编程实战(二)对象的共享
    项目经验谈---IM新消息界面刷新异常处理记录
    读书笔记-----Java并发编程实战(一)线程安全性
    OnScroll与OnTouchEvent方法的区别与联系
    View的getLeft, getRight, getTop, getBottom
    如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
    更改ubuntu mysql data目录位置
  • 原文地址:https://www.cnblogs.com/haoliberale/p/6580822.html
Copyright © 2011-2022 走看看