20165227 2018-3 《Java程序设计》第四周学习总结
教材学习内容总结
第五章 子类与继承
- 子类的继承性
- 子类与父类在同一包中的继承性:子类继承了其父类中不是
private
的成员变量与方法 - 子类与父类不在同一包中的继承性:子类只继承父类中
protected
和public
访问权限的成员变量与方法 - 子类与对象:创建一个子类的对象的时候,子类继承的那部分成员变量作为分配给子类对象的变量
- 成员变量的隐藏和方法的重写
- 成员变量的隐藏:当所声明的成员变量的名字和从父类继承来的成员变量的名字相同时候,子类就会隐藏所继承的成员变量
- 方法重写:子类通过重写可以隐藏已继承的方法;如果子类想使用被隐藏的方法或成员变量,必须使用
super
关键字 super
关键字:super.x
super.play()
就是访问和调用被子类隐藏的成员变量和方法;super
必须是子类构造方法中的头一条语句final
关键字- 可以将类声明为
final
类,此类不能被继承,即不能有子类 final
方法:此方法不允许子类重写,不允许子类隐藏可以继承的final
方法final
变量:就是常量- 多态性:指父类的某个方法被其子类重写时,可以各自产生自己的功能行为
abstract
类和方法- 类:
abstract
类中既可以有abstract
方法也可以有非abstract
方法;不能用new运算符创建对象 - 方法:```abstract int min (int x ,int y);
第六章 接口与实现
- 接口:用
interface
关键字来定义一个接口;接口体中所有的常量的访问权限一定都是public
,而且是static
常量;所有的抽象方法的访问权限一定都是public
- 实现接口:用
implements
关键字声明该类实现一个或多个接口,用,
隔开接口名;如果父类实现了某个接口,子类就不用再次声明;接口可以被继承 - 接口回调:借用了c语言中指针回调的术语;可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法
- ````abstract``` 类与接口的比较
- 两者都可以有
abstract
方法 - 接口中只可以有常量,不能有变量;而前者都可以有
abstract
类中也可以有非abstract
方法,而接口不可以
教材学习中的问题和解决过程
- 问题1:重写的意义在哪儿?
- 问题1解决方案:书上说到,方法的名字是非常重要的,而且是常用的,这样在使用时,方法便是人们习惯性使用的,更加方便操作
- 问题2:有点没搞懂private、public、protect的区别是什么?
- 问题2解决方案:
private
: 如果A类中某个成员是private类变量和方法,那么另一个类B中,不能通过类名A来操作这个变量和方法
public
如果A类中某个成员是public类变量和方法,那么另一个类B中,能通过类名A来操作这个变量和方法
protect
如果在另外一个B中用类A创建了一个对象后,如果A和B在同一个包中,那么该对象可以访问自己的protect变量和方法。
代码调试中的问题和解决过程
-
问题1:出现了编译错误
-
问题1解决方案:不应该用double去定义computer,因为computer的父类类型是float,子类定义应该和父类保持一致
代码托管
上周考试错题总结
- 错题1:char str[] = " hello"是错误的初始化语句
解决:hello为string型 - 错题2:17题
解决:从高到低转换会损失精度 - 错题3:33题
解决:int强制转换字符表示字符的Unicode码,即字符在Unicode表中的位置 - 错题4:short和Float都属于基本数据类型?
解决:未区分清楚数据类型与封装类的区别,因为Float是float提供的封装类,不是基本数据类型 - 错题5:错题8
解决:对运算精度规则不熟悉,此题应该是如果表达式中最高精度为double 则按双精度进行运算。如果表达式中最高精度低于int型整数,才按int精度进行运算
感悟
除了正常的学习视频外,仍然需要对书本上的知识点进行学习,在调试代码的实践中学习,才能进步!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 210/210 | 1/1 | 20/20 | |
第二周 | 240/450 | 1/2 | 18/38 | |
第三周 | 496/946 | 1/3 | 22/60 | |
第四周 | 624/1570 | 1/4 | 30/90 |