20165208 2017-2018-2 《Java程序设计》第四周学习总结

本文总结了Java程序设计的学习要点,包括子类继承、方法重写、多态性等核心概念,探讨了实例化对象、访问权限控制及接口实现等问题。

20165208 2017-2018-2 《Java程序设计》第四周学习总结

教材学习内容总结

定义理解

子类
  1. 子类只能有一个父类,它继承了父类(超类)的属性和行为。

    class 子类名 extends 父类名{}

  2. 每个类(除了Object类)有且仅有一个父类,一个类可以有多个或零个子类。class Aclass A extends Object是等同的。
  3. 当子类和父类不在同一个包中时父类中的private和友好访问权限的成员变量不会被子类继承。对于protected变量或方法,若想访问,则需与声明该变量或方法的类处于同一个包中。
  4. 子类和父类可能有相同名字的成员变量,子类会隐藏所继承的成员变量。子类对象及子类自己定义的方法操作的是子类自己声明的变量。子类继承方法操作的是被子类继承或隐藏的成员变量。

    instanceof
  5. instanceof左面操作元是对象,右面的操作元是类
  6. 当左面的操作元是右面的类或其子类创建的对象时,运算的结果是true,反之false。

    方法重写
  7. 子类定义的方法类型和父类方法的类型一致,并且方法的名字、参数个数、参数的类型和父类的方法完全相同。
  8. 重写方法可以操作继承的成员变量、调用继承的方法,操作子类新声明的成员变量、调用新定义的其他方法,但不能直接操作被子类隐藏的成员变量和方法。
  9. 重写只能提高访问权限,不能降低。

    super
  10. 在子类中使用被子类隐藏的成员变量或方法,super.成员变量,super.方法.

    final
  11. final类不能被继承,即不能有子类。
  12. final修饰父类中的一个方法,那么这个方法不允许子类重写(只能继承,不能做任何篡改)
  13. final修饰成员变量或局部变量,则其为常量,需要在使用时指定该常量的值。

    对象的上转型对象
  14. 子类创建一个对象,并把这个对象的引用放到父类的对象中

    Animal a;
    Tiger b=new Tiger();
    a=b;

称对象a是对象b的上转型对象

  1. 上转型对象不能操作子类新增的成员变量和方法,但可以访问继承和隐藏。如果子类重写了父类的实例方法,那上转型调用的是子类重写的。

    多态

    父类的某个方法被子类重写以产生自己的功能行为。

    abstract

    只允许声明,不允许实现,不允许使用final和abstract同时修饰一个方法或类,且abstract方法必须是实例方法。

    接口
  2. 声明:interface接口的名字
  3. 接口体中包含常量的声明和抽象方法
  4. 如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法,而且方法的访问权限一定要明显的用public修饰。

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

  • 问题1:书中Example5_5子类B中定义的是float型变量,为何输入时可以直接输入8,9?
  • 问题1解决方案:对前面的知识点有所遗忘,系统可以自动完成级别低的变量到级别高的变量的转化。
  • 问题2:书中Example5_7里修改程序后的结果和我理解后算出来的不一样

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

  • 问题1:1283587-20180325194049209-2001161825.jpg

  • 问题1解决方案:只能修改文件名,中间的空格会默认为后面的路径

代码托管

1283587-20180325193726500-1901512720.jpg

上周考试错题总结

  • >>>为无符号位右移,>>为带符号位右移,区别在于移位空出来位置,带符号位的全部需要用符号位补齐。
  • if关键字后面的小括号内,表达式的值可以为10。这句话是错的。表达式是指整个式子,不应理解为if(a==10).
  • 3* 2^2的结果并非12,而是4,我理解的是优先运算3*2,再与2进行异或。
  • 0xaa|0x55的值为?
    0xaa转化为二进制应为10101010,0x55转化为二进制应为01010101,按位或后为11111111,注意转化为十六进制要写为0xFF,而不是FF。
  • Float是float提供的封装类,不是基本数据类型
  • 以0开头的是八进制表示法,十六进制以0X开头
  • byte b=(byte)(-150);则b的值为106
    byte的范围为[-128,127],150-128=22,22往前接着跟上一组127的部分,127-22+1=106;
  • char str[]="hello"与char str[]={'h','e','l''l''o'}是正确的
    主要注意java不同于c语言,方括号里不能有数组元素个数,其次在花括号里字符串必须拆成单个字母写。

参考资料

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周36/364/430/30
第二周464/5001/518/48
第三周331/8812/717/65
第四周939/18202/1115/80

转载于:https://www.cnblogs.com/KY-high/p/8646235.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值