重载及覆写的区别
|
No. |
区别点 |
重载 |
覆写 |
|
1 |
定义 |
方法名称相同,参数的类型或个数不同 |
方法名称、参数的类型或个数、返回值相同 |
|
2 |
权限 |
没有权限要求 |
被覆写的方法不能拥有比父类更严格的权限 |
|
3 |
范围 |
发生在一个类之中 |
发生在继承关系中 |
|
4 |
单词 |
OverLoading |
Override |
this与super的区别
|
No. |
区别点 |
this |
super |
|
1 |
使用 |
调用本类中的属性或方法 |
从子类调用父类中的属性或方法 |
|
2 |
构造 |
可以调用本类构造,且有一个构造要作为出口 |
从子类调用父类的构造方法,不管子类如何安排最终一定会去调用,默认调用的是父类中的无参构造方法 |
|
3 |
要求 |
调用构造的时候一定要放在构造方法首行 |
放在子类构造方法首行 |
|
使用super和this调用构造方法的语句是不可能同时出现的 | |||
|
4 |
特殊 |
表示当前对象 |
无此概念 |
抽象类和接口的区别
接口和抽象类从使用上看非常的相似,那么下面通过以下的表格对两者进行区分:
|
No. |
比较 |
抽象类 |
接口 |
|
1 |
关键字 |
使用abstract class声明 |
使用interface声明 |
|
2 |
定义 |
包含一个抽象方法的类 |
抽象方法和全局常量的集合 |
|
3 |
组成 |
属性、方法、构造、常量、抽象方法 |
全局常量、抽象方法 |
|
4 |
权限 |
抽象方法的权限可以任意 |
只能是public权限 |
|
5 |
使用 |
通过extends关键字继承抽象类 |
通过implements关键字实现接口 |
|
6 |
局限 |
抽象类存在单继承局限 |
没有此局限,一个子类可以实现多个接口 |
|
7 |
顺序 |
一个子类只能先继承抽象类再实现多个接口 | |
|
8 |
设计模式 |
模板设计 |
工厂设计、代理设计 |
|
两者联合可以完成一个适配器设计 | |||
|
9 |
实际作用 |
只能做一个模板使用 |
作为标准、表示能力 |
|
10 |
使用 |
两者没有什么本质的区别,但是从实际上来看,如果一个程序中抽象类和接口都可以使用的话,则一定要优先考虑接口,因为接口可以避免单继承所带来的局限。 | |
|
11 |
实例化 |
都是依靠对象多态性,通过子类进行对象实例化的 | |
ArrayList和Vector的区别
从代码的最终的操作形式上可以发现,代码的输出结果与之前是一样的,而且没有区别,但是两者的区别还在于其内部的组成上。
|
No. |
区别点 |
ArrayList |
Vector |
|
1 |
推出时间 |
JDK 1.2之后 |
JDK 1.0的时候推出 |
|
2 |
线程处理 |
ArrayList采用异步处理 |
采用同步处理 |
|
3 |
性能 |
速度较快 |
速度相对较慢 |
|
4 |
安全性 |
非线程安全性的操作 |
属于线程安全的操作 |
|
5 |
输出 |
由于都是List接口的子类,所以都可以依靠size()和get()两个方法完成循环输出 | |
|
for、Iterator、ListIterator |
for、Iterator、ListIterator、Enumeration | ||
HashMap与Hashtable的区别
HashMap和Hastable在使用上相似,那么两者的区别如下:
|
No. |
区别点 |
HashMap |
Hashtable |
|
1 |
推出时间 |
JDK 1.2之后 |
JDK 1.0的时候推出 |
|
2 |
线程处理 |
采用异步处理 |
采用同步处理 |
|
3 |
性能 |
速度较快 |
速度相对较慢 |
|
4 |
安全性 |
非线程安全性的操作 |
属于线程安全的操作 |
|
5 |
保存null |
允许key设置成null |
不允许设置,否则出现NullPointerException |

被折叠的 条评论
为什么被折叠?



