20165208 2017-2018-2 《Java程序设计》第四周学习总结
20165208 2017-2018-2 《Java程序设计》第四周学习总结
教材学习内容总结
定义理解
子类
- 子类只能有一个父类,它继承了父类(超类)的属性和行为。
class 子类名 extends 父类名{}
- 每个类(除了Object类)有且仅有一个父类,一个类可以有多个或零个子类。
class A
与class A extends Object
是等同的。 - 当子类和父类不在同一个包中时父类中的private和友好访问权限的成员变量不会被子类继承。对于protected变量或方法,若想访问,则需与声明该变量或方法的类处于同一个包中。
- 子类和父类可能有相同名字的成员变量,子类会隐藏所继承的成员变量。
子类对象及子类自己定义的方法操作的是子类自己声明的变量。
子类继承方法操作的是被子类继承或隐藏的成员变量。
instanceof
- instanceof左面操作元是对象,右面的操作元是类
- 当左面的操作元是右面的类或其子类创建的对象时,运算的结果是true,反之false。
方法重写
- 子类定义的方法类型和父类方法的类型一致,并且方法的名字、参数个数、参数的类型和父类的方法完全相同。
- 重写方法可以操作继承的成员变量、调用继承的方法,操作子类新声明的成员变量、调用新定义的其他方法,但不能直接操作被子类隐藏的成员变量和方法。
- 重写只能提高访问权限,不能降低。
super
- 在子类中使用被子类隐藏的成员变量或方法,
super.成员变量
,super.方法
.
final
- final类不能被继承,即不能有子类。
- final修饰父类中的一个方法,那么这个方法不允许子类重写(只能继承,不能做任何篡改)
- final修饰成员变量或局部变量,则其为常量,需要在使用时指定该常量的值。
对象的上转型对象
- 子类创建一个对象,并把这个对象的引用放到父类的对象中
Animal a;
Tiger b=new Tiger();
a=b;
称对象a是对象b的上转型对象
2. 上转型对象不能操作子类新增的成员变量和方法,但可以访问继承和隐藏。如果子类重写了父类的实例方法,那上转型调用的是子类重写的。
多态
父类的某个方法被子类重写以产生自己的功能行为。
abstract
只允许声明,不允许实现,不允许使用final和abstract同时修饰一个方法或类,且abstract方法必须是实例方法。
接口
- 声明:
interface接口的名字
- 接口体中包含常量的声明和抽象方法
- 如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法,而且方法的访问权限一定要明显的用public修饰。
教材学习中的问题和解决过程
- 问题1:书中Example5_5子类B中定义的是float型变量,为何输入时可以直接输入8,9?
- 问题1解决方案:对前面的知识点有所遗忘,系统可以自动完成级别低的变量到级别高的变量的转化。
- 问题2:书中Example5_7里修改程序后的结果和我理解后算出来的不一样
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:只能修改文件名,中间的空格会默认为后面的路径
代码托管
上周考试错题总结
>>>
为无符号位右移,>>
为带符号位右移,区别在于移位空出来位置,带符号位的全部需要用符号位补齐。- 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/36 | 4/4 | 30/30 | |
第二周 | 464/500 | 1/5 | 18/48 | |
第三周 | 331/881 | 2/7 | 17/65 | |
第四周 | 939/1820 | 2/11 | 15/80 |