1.List,Set,Map是否都继承了Collection接口?
List,Map比较常用:List是通过下标来访问元素,Map是通过键值进行访问元素。应该不会同时都实现了Collection接口.
Collection是一个什么概念?还有Set在java中是怎样定义的?他是通过下标来访问元素还是通过键值来访问元素?两者谁继承了Collection接口呢?或者有没有可能两者都继承了Collection接口?
时间不多了,我是这样写的:
Set,Map实现了Collection接口。而List不需要实现Collection接口。
回家一翻资料,发现这个问题我完全回答错了。
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。所有实现Collection接口的类都必须提供两个标准的构造函数:
无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,
使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator();
while(it.hasNext()) {
Object obj = it.next();
}
由Collection接口派生的两个接口是List和Set。
List和Set的区别:List以元素安插的次序来放置元素,不会重新排列;而Set不接爱重复元素,它会使用自己内部的一个排列机制
标准答案是:
List和Set继承了Collection接口,而Map没有继承Collection接口
2.Overload和Override的区别
我知道Overload是重载,Override是覆盖。但有关他们的定义和区别,我脑子里真没什么影像了.于是我就写了这么一句话。回去以后一翻书,我总算明白了。
Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。
Overload是指同一个类中不同方法,这些方法有着相同的名称和不同的参数类型。
override 是运行时动态决定调用哪个method. 所以叫做多态性。
例如:
定义一个父类:
publci abstract class AnimalClass{
public AnimalClass(){
}
public abstract void description();
}
定义一个子类:
public class CatClass extends AnimalClass{
public CatClass(){
}
public void description(){
System.out.println("this is cat.");
}
}
public class DogClass extends AnimalClass{
public CatClass(){
}
public void description(){
System.out.println("this is dog.");
}
}
编写一个配置文件prop.properties:
#如果键值为1,执行Cat的description方法,如果键值为2,执行dog的description方法
key=1
public class Test{
public static void main(String[] args){
AnimalClass animal = null;
Properties prop = new Properties();
prop.load(prop.getClass().getResourceAsStream("/emp.properties"));
String result =prop.getProperty("key");
if(key.equals("1")){
animal = new DogClass();
}else if(key.equals("2")){
animal = new CatClass();
}
animal.description();
}
}
而overload 是编译期就决定了调用哪个函数。
黑马程序员 两道java面试题