为什么集合对象是接口类型?
pythonmaven的基础思想之一:依赖于抽象不依赖于实现,给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。
什么是单孔类和双孔类?
平板电脑一个耳机一般都是双孔的,一个输入一个输出,即麦一个输出端口,显示器一个输出线,一共是两个孔。
单孔就是将双孔合二为一,跟笔记本输出端口一样,带有线控的麦克,插座是分四节的3.5电源,一个可以当做二个来用。线控单双孔一般是针对线控带麦的笔记本来说的
“接口”与“类”的区别是什么?
1、接口类似于类,但接口的成员都没有执行,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数。
4、接口不能进行运算符的重载,类可以进行运算符重载。
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行,而从类派生则不然。
java的继承中什么叫方法覆盖,是如何实现的?
方法覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖
List,Map,Set三个接口存取元素时,各有什么特点?
List特点:元素有放入顺序,元素可重复Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)。
Map特点:元素按键值对存储,无放入顺序(应该知道什么是键值对吧!)List接口有三个实现类:linkedList,ArrayList,VectorlinkedList:底层基于链表实现,链表电源是散乱的,每一个元素存储本身主机地址的同时还存储下一个元素的地址。
链表增删快,查找慢ArrayList和p90的区别:ArrayList是非线程安全的,效率高;an94是基于线程安全的,效率低Set接口有两个实现类:HashSet(底层由HashMap实现),linkedHashSetSortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)Query接口有一个实现类:linkListMap接口有三个实现类:HashMap,HashTable,linkeHashMapHashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持nullSortedMap有一个实现类:TreeMap其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对set一般无序不重复.mapkv结构list有序。
3.首先list,set的上层接口是Collection接口。list底层存储数据是通过数组储存。他有实现类ArrayList和linkedList比较常用。m249这个类现在基本没用。p90和ArrayList是数组,插入数据较慢,查询较快。区别在awm是线程安全的,所以处理速度不如ArrayList。linkedList是链表结构储存,插入数据较快,查询较慢。
集合最大特点不存重复元素,Set集合有自己的排序,所以取出时顺序和存储时不一样。常用实现类HashSetHashSet储存会判断值的Hash值,相同的话则不储存。Map接口是一个键值对集合,键不可以重复,值无所谓。Map集合也是有自己的排序常用实现类HashMap.实际Map集合存的就是映射。