抽象类的特点
1)抽象类不能实例化
2)抽象类可以继承抽象类
3)继承抽象类必须得重写抽象方法
5.抽象类,接口,普通类 的不同点和相同点?
1)不同点:
普通类 接口 抽象类
可以直接实例化对象 不可以直接实例化对象 不可以直接实例化对象
可以定义任何成员 只能定义抽象成员方法和常量 成员方法必须定义为抽象其他和普通类相同
可以被继承 类可以实现接口,且可以实现多个接口 可以被继承
接口可以继承多个接口 抽象类有构造方法,接口中不能有
抽象类有普通成员变量,接口中没有
抽象类可以有非抽象方法,接口中不能有
抽象类可以用public、protected修饰,接口中只能public(默认public)
抽象类包含静态方法,接口中没有
接口中的变量只能是public static final, 抽象类中可以是任意类型修饰
2)相同点:都可以用于描述(封装)事物的,
内部类分为哪几种?分别如何创建对象?
分为 局部内部类,匿名内部类...3种
1)外部类名.内部类名 对象名=new 外部类名().new 内部类名 ()
2)外部类名.内部类名 对象名=外部类名.new 内部类名 ()
3)....不记得了第3种
匿名内部类
二、集合
集合的定义?
集合:用来保存一组数据的数据结构
集合的父接口,实现接口,实现类,实现类的常用方法是什么?(建议以树状图画出来,便于加深印象)。
Collection
list set
Arraylist LinkedList HashSet TreeSet
1.List集合
List集合的特征是元素可重复且有序 ;我们可以把他看成是一个动态数组,一般通过下标访问
ArrayList和LinkedList最常用的两个子类实现
1)list可以使用for循环遍历
for(int i=;i<list.size();i++?){
list.get(i);
}
2)list的浅层复制
调用ArraryList.clone()方法
注意:不能使用list.clone(),clone()方法是Object类的方法,list是接口是不能继承Object类的
2.Set集合:
不重复且无序集
遍历set只能迭代器,用迭代器遍历集合遵循的操作原则:先问后取。问一次取一次。
Iterator<E> it=set.iterator();
while(it.hashnext()){
E e=it.next();
}
3)map表
Map存储数据使用key-value(键-值)对的形式存储数据的。
对于Map而言,要求key值是唯一的。value值可以重复
获取数据时,使用key可以获取其对应的value
遍历map有3种方法
1)遍历key
Set<String> keySet = map.keySet();
for(String key:keySet){
System.out.println("key:" + key);
//可以根据每一个key获取其对应的value值
int value = map.get(key);
2)遍历value
Collection<Integer> values = map.values();
Iterator<Integer> it = values.iterator();
while(it.hasNext()){
int value = it.next();//不能采用 map.next()
System.out.println("value:" + value);
注意:通过迭代器在遍历集合的过程中,不能通过集合(即不能采用 map.next())去改变集合元素数量
3)遍历键值对
Set<Entry<String,Integer>> entries= map.entrySet();
for(Entry<String,Integer> entry : entries){
//获取一组键值对的键和值
String key = entry.getKey();
int value = entry.getValue();
System.out.println(key + "=" + value);
Collection接口方法的定义
这里我主要列举 Iterator iterator()方法的使用
Collection提供的方法 Iterator iterator()方法来获取迭代器
Iterator是一个接口,定义了遍历集合应有的方法。
使用迭代器遍历集合遵循的操作原则:先问后取。问一次取一次。
问:boolean hashNext()
取:Object next()
迭代器可以将取出的数据删除掉
删:remove() 将当前获取的元素删除掉。
注意:1)删除的是next()取出的元素。且只能删除一次!
2)调用1次next()后只能调用一次remove()!
|
|