day2
1.abstract关键字
抽象类中有若干个抽象方法,类和方法都要用abstract修饰。
interface则不用实现任何方法,纯接口,如果有类来实现他,要用implements而不是extends
2.适配器模式
给一个类做一个适配器类,让这个类的接口可以任意指定。
|
|
可以看到,适配器模式用来将一个不符合我们要求的接口的类包装一下,成为一个符合我们接口的类。
3.接口内
接口内定义的成员变量都是默认public static final修饰。静态常量。接口的所有成员都是public
4.多重继承
只能继承一个具体的类,可以继承任意多个接口。
5.内部类
内部类如果是非static类,就可以访问到外围类的对象成员,因为外围类对象在创建内部类对象时,内部类对象会捕获一个外围类对象的引用,进而可以访问。
在内部类可以调用outerclassname.this来调用外部类的引用。
还可以用outerclassname.new 来生成一个内部对象。
protected权限包内类可访问。
6.ArrayList
类似于c++的vector,当作一个变长数组,不同的是,声明时可以不用声明所含数据类型。
|
|
不能用[]访问,要用get(int id)方法访问。
两种容器类型Collection和Map,他们本身就是一个基类。
7.List
分为ArrayList和LinkedList,相当于c++的vector和List。
List的常用接口
get(index)
indexOf(obj)
remove(obj)//删除引用的对象
add(obj)
add(index,obj)//插入
subList(start,end)
sort(List)
contains(obj)//查询
asList((args…))//包装成一个List返回
set(index,obj)
equals()
shuffle()//洗牌
replace()//同set()
LinkedList还有:
add(),addLast()
addFirst()
peek()
8.迭代器接口
原理和c++一样。
iterator()//返回一个迭代器,通过next()返回元素。
next()//返回下一个元素
hasNext()//是否还有
remove()//删除最近next的元素
Iterator只能向前移动,子类ListIterator可以双向移动。
9.Queue
同c++的queue,接口是:
- offer()//插入队尾
10.Map
同c++的Map,接口:
- put(a,b)//插入
11.poll
poll弹出并删除首个元素,pop仅查看。
12.Collection和Iterator
可以同时实现Collection参数的方法,这样可以运用到所有子类中。
也可以实现迭代器版本,达到同样效果。迭代器版本不局限于Collection的子类。