重载及覆写的区别
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
|