自己用来看的,每次做题都容易忘,查到的都放一起,容易找
- java类可以继承抽象类和普通类
区别:
抽象类:
1、抽象类中可以有普通方法,如果想让方法子类必须实现,就弄成抽象方法。
2、如果抽象类中有抽象方法,那么这个类必须定义为抽象类。
3、抽象类不能被new。
普通类:
1、普通类中不能有抽象方法。
2、如果一个普通类实现了一个抽象接口或者抽象类,那么意味着必须重写抽象方法 - 抽象类和接口的区别
- 一个子类只能继承一个抽象类,但能实现多个接口
- 抽象类可以有构造方法,接口没有构造方法
- 抽象类可以有普通成员变量,接口没有普通成员变量
- 抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
- 抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法
- 抽象类可以有静态方法,接口不能有静态方法
- 抽象类中的方法可以是public、protected;接口方法只有public
- 抽象类和接口的相似性
1 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。
2 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 - 当同时存在继承和实现接口时,顺序一定是先继承后实现。
- 集合中的一些知识点,易混淆的易忘的
- 由Collection接口派生的两个接口是List和Set。
1.List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。允许有重复。
2.LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。线程不安全。
3.ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
4.Vector非常类似ArrayList,但是Vector是同步的。
5.Set是一种不包含重复的元素的Collection。 - arraylist和linkedlist
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 - HashMap无序,TreeMap有序。
- HashTable线程安全,不能有空的键值对,而HashMap线程不安全,可以有空的键值对。(Map集合中不能包含相同的key)