一,抽象类和接口区别
1,抽象类表示的是继承关系(is A),一个类只能继承一个类,但一个类却可以实现多个接口。
2,抽象类可以包含抽象的方法,也可以包含非抽象的方法。而接口只能包含静态的final的数据成员,而且都是抽象的
3,设计理念不同:抽象类是IS-A关系,接口是LIKE-A关系。(当一个行为和类的所有属性和方法不相关时,应该采用接口,不能使用抽象,否则违反面向对象的ISP规则和OCP规则)。抽象类体现继承关系,接口体现契约关系。接口不要求其实现者和接口定义在概念本质上市一致的
4,实现抽象类和接口的类必须实现其所有方法。接口可以包含非抽象的方法,接口不能有实现的方法
5,接口中定义的变量默认是 public static final,且必须给其初值。实现类不能重新定义,也不能改变。变量也可以为 friednly
6,抽象类的变量默认是 friendly 类型的。
7,接口中的方法默认是:public,abstract
二,hashtable和hashmap的区别
1,hashtable的方法是同步的,hashmap方法是不同步的
2,hashmap可以将null作为key或者value,hashtable不可以
3,初始数组大小不一样,hashmap是16,hashtable是11
4,扩容机制不一样,hashmap是旧的*2,hashtable是旧的*2+1
5,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
6,Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
7.两句话总结:
8.HashMap => 不同步、空键值、效率高;
9.Hashtable => 同步、非空键值、效率略低
(Properties是hashtable的子类 设计用于string keys,values。Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正好相反,用来读取文件,并设定Properties对象来包含keys和values)