20165205 2017-2018-2 《Java程序设计》第四周学习总结
教材学习内容总结
- 相关概念:
- 继承:避免多个类间重复定义共同行为
- 子类与父类:
- 父类:
- 对有着共同特性的多类事物,进行再抽象成一个类,这个类就是多类事物的父类
- 父类的意义在于可以抽取多类事物的共性
- 子类既可以是一个子类,也可以是一个父类;父类既可以是一个父类,也可以是一个子类
- 在Java中只有单一继承,即子类只能继承一个父类
- 子类与父类间会有is-a的关系(子类 is a 父类)
- 父类:
- is-a
- 多态:
- 继承可以复用代码,更大的用处是实现「多态」
- 封装是继承的基础,继承是多态的基础
- 「用父类声明对象引用,用子类生成对象」就有了多态
- 覆盖:子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,就会覆盖从父类继承来的方法
- 抽象方法、抽象类:
- Java中有抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法
- 抽象类不能使用
new
生成对象
- 上转型对象:
- 不要将父类创造的对象和子类对象的上转型对象混淆。
- 如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用子类重写的静态方法。
- 关于接口:
- 接口(interface),在Java编程语言中是一个抽象类型,是抽象方法的集合
- 关键字:
-
extends
:- 继承父类的行为,再扩充父类原本没有的行为
- 继承时使用
extends
关键字,private
成员也会被继承,但子类无法直接存取,必须通过父类提供的方法来存取(父类愿意提供访问方法的话)
-
权限关键字:
-
public
:权限最大 -
protected
:被声明为protected
的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取 -
private
:权限最小但实际上有四个权限范围(未定义权限关键字时默认为包范围):
|关键字 | 类内部| 相同包类|不同包类|
| -------- | :----------------😐:----------------😐:---------------: |
| public | 可存取 | 可存取 | 可存取 |
| protected | 可存取 | 可存取 | 子类可存取 |
| 无 | 可存取 | 可存取 | 不可存取 |
| private | 可存取 | 不可存取 |不可存取|
设计时使用权限需根据经验或团队讨论而定,通常先使用private
,以后视需求再放开权限。
-
-
super
:- 取得父类中的方法定义
- 执行父类中某构造函数
- 与
this
只能择一调用,而且一定要在构造函数第一行执行
-
final
:- 定义类:表示这个类是最后一个,不会再有子类,不能被继承
- 定义方法:表示最后一次定义方法,子类不可以重新定义
final
方法
-
abstract
:如果某方法区块中没有任何程序代码操作,可以用abstract
标示该方法为抽象方法,该方法不用写{}
区块,直接;
结束即可
-
代码调试中的问题和解决过程
- 问题1: 课本中多个代码都写了许多个java文件,这样就要求一定要放在同一个文件夹之下,假如不放在同一文件夹之下,编译也是十分麻烦的,
- 问题1解决方法:所以我把书上的分开的java文件写在了一个文件里,这样比较方便,但是我不知道这样做到底好不好。但是确实方便一点是真的。
上周错题总结
-
与
3*4
的值相等的是:3<<2
。4的二进制是100,所以3*4
是3左移2位和3<<2一样. -
观察以下方法的定义,则该方法返回类型为的double.
ReturnType method(byte x,double y) { return (short)x/y*2; }
short将byte类型的x强制转化为short类型,但y的精度更高,所以返回类型为double。
-
Float和float不一样,Float是float提供的封装类,不是基本数据类型。以0开头是八进制表示法,十六进制是0x开头。
-
“字符类型”中的“字符”指Unicode表中的一个字符。
-
错误的初始语句有:
char str[]='hello';
,char str[100]="hello";
,char str[]={'hello'};
代码托管
总结
在这次的博客里,我把知识总结和教材中的问题及解决方法合并在了一起,没有采用之前的只列知识点,而是把知识点和详细的内容写在了一起,这样我看的时候也容易一点。当然也有一些是我没有写到的。
随着时间推移我们学习的内容也越来越难,越来越深入了,但是只要我能紧跟老师的时间线,紧凑地学习,是可以掌握大部分知识的。