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


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

    教材学习内容总结

    继承与多态:

    • 子类和父类有(is a)关系,Role role1 =new Swordsman();右边类是左边类的一个子类,swordsman是一种(ia )Role;
    • private成员会被继承,只不过子类无法直接存取;
    • Swordsman swordsman=(Swordsman)role1; 将role扮演Swordsman;
    • 权限关键字:
    - protected 类内部和相同包类可存取,不同包类的子类可存取。
    - public    类内部和相同包类,不同包类均可存取。
    - private 类内部可存取。相同包类,不同包类不可存取。
    
    • instanceof 运算符执行时期只要左操作数是右操作数子类型,instanceof返回ture

    • 多个类间出现重复代码时候,可以把相同的程序代码提升为父类;

    • 继承时用extends关键字,private成员也会被继承,子类无法直接存取,必须通过父类方法存取。

    • 检查多态语法是否正确,从=右边往左边读,右边是左边的子类就对。

    • 多态就是用单一接口操作多种类型的对象。

    • 没任何代码操作,就使用abstract标示该方法为抽象方法,表示这个类定义不完整不完整的类不能用来生成实例,不用写{},直接;结束。

    • [ ] public abstract class Role{
      public abstract void fight();
      }
      一定要在class 前标示abstract

    • 子类继承抽象类有两种方法,

    • 1:继续标示该方法为abstract,(子类也是抽象类,class前你、标示abstract);

    • 2:操作抽象方法。

    • Java中三个权限关键字public,protected,private.有四个权限范围。

    • 想执行父类中某个构造函数,用super()指定。this()与super()择一调用,而且一定在构造函数第一行执行。

    • java中,任何类的最上层父类,就一定是java.lang.object
      JVM有垃圾收集机制,无法通过变量参考的对象,就是GC认定的垃圾对象。
      子类中没有指定调用父类中哪类构造函数,默认会调用父类中无参数构造函数。

    接口与多态

    • 定义行为,JAVA中用interface关键字定义;
    • 操作接口,用implements关键字, implements Swimmmer(){。。。}就是操作接口
    • 继承有“是一种”关系,操作接口表示“拥有行为”,但不是是一种关系。
    • 行为多态
    • Swimmer swimmer1 = new Shark();判断“右边是不是拥有左边行为”,或者“右边对象是不是操作了左边接口”
    • final:
    • class前使用final,表示这是最后一个类,不会再有子类,定义方法时,定义该方法为final,说明最后一次定义该方法,子类不可以重新定义该方法。
    • enum语法可定义枚举常数,enum中定义了特殊的类,实际上定义了类,无法撰写程序直接实例化,枚举类型,因为构造函数权限定为private,只有类中才可以实例化。

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

    • 问题1:包权限问题

    • 解决方案:Action中定义的execute()其实默认为public abstract,而some类在操作execte()方法时,没撰写public,默认了包权限,等于将Action中public的方法缩小到包权限,所以编译失败。需要把Some类中execute()设为public才可以运行。

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

    • 问题1:无法从静态上下文中引用非静态方法”这个问题怎么解决?

    • 解决方案1:我把Magician。setbolod大写M了,应该小写。

    • 用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。
      静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。
      比如常见的main方法都是静态的,必须由static修饰,因此在main方法里调用类的其他非静态方法,都是需要先申明对象,才能用。否则就会出现引用非静态方法的错误。
      要解决这个问题,可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。

    • 问题2:构造函数问题,输出什么?

    • 解决方案2:SOme是Other父类,题中SOme不是构造函数,因此并不会第一行执行父类的super(),直接输出下面的other service

    • 问题3:p190第3题输出是什么?

    • 解决方案:如果改成some,ToString 就可以正常输出,所以我感觉输出的是类里面文字转换成16进制数字了。

    • 问题4:我不小心把全部代码误删除了,因为开元中国里面我的src文件夹里没东西了,我就pull了一下到本地,结果都没了我这个月的代码。




    • 解决方案:
      我把之前的垃圾桶里文件还原,找回了一些,但是彻底解决方法还是不知道,所以以后一定要有一个备份文件夹,防止弄丢。

    代码托管

    • 代码提交过程截图:

    • 代码量截图:

    上周考试错题总结

    1. 填空:Linux Bash中,(grep )命令可以进行全文搜索。
      1. CH04 判断:p86 Guess.java中guess的值无法输入12。(X)
    2. CH05 判断:Java中类总会有默认构造方法。(X)
    3. CH05 判断:private不能用在构造方法上,这样就无法创建对象了。(X)
    4. CH05 填空:Java中类的成员变量必须进行初始化,否则会出语法错误。(X)
    5. CH05 填空:Java中成员方法中引用成员变量,要使用(this)关键字。
    6. CH05 填空:Java中方法参数只用(传值)调用。

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

    本周学习时间很长,懂了好多东西,而且发现编程与看书一起效果最好。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 700/1400 7/9 27/90

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

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

    参考资料

  • 相关阅读:
    Swift
    Swift
    Swift
    Swift
    获取项目版本号与设置引导页的判断条件
    [iOS]简单的APP引导页的实现 (Swift)
    iOS
    文顶顶 iOS开发UI篇—UITabBarController简单介绍 iOS开发UI篇—UITabBarController简单介绍
    Swift开源项目精选
    Fuel 5.1安装openstack I版本号环境
  • 原文地址:https://www.cnblogs.com/zx20155202/p/6581275.html
Copyright © 2020-2023  润新知