第十章 内部类
1、创建内部类
如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象:OutClassName.InnerClassName
2、链接到外部类
内部类对象可以访问外围对象的所有成员,而不需要任何条件。
内部类还拥有外围类的所有元素的访问权。
3、.this和.new
生成对外部类对象的引用,可以使用外部类的名字后面紧跟圆点和this。如DotThis.this。
创建某个内部类的对象。使用.new语法。
public class DotNew(){
public class Inner{}
public static void main(String[] args){
DotNew dn=new DotNew();
DotNew.Inner dni=dn.new Inner();
}
}
4、在方法和作用域内的内部类
在方法的作用域内创建一个完整的类,这被称作局部内部类。
5、嵌套类
如果不需要内部类对象和外部类对象有联系,可以将内部类声明为static。
1)要创建嵌套类的对象,并不需要其外围类的对象。
2)不能从嵌套类对象中访问非静态的外围类对象。
6、为什么需要内部类
内部类最吸引人的原因是:每个内部类都能独立地继承自一个(借口)实现,无论外围类是否已经继承了某个(借口的)实现,对于内部类都没有影响。
内部类允许继承多了非接口类型(类或抽象类)
1)闭包
闭包是一个可以调用的对象,它记录了一些信息,这些信息来自于创建她的作用域。
内部类就是面向对象的闭包,他不仅包含外围类对象的信息,还自动拥有一个指向此外围类对象的引用。
第十一章 持有对象
1、泛型和类型安全的容器
可以将类的子类型添加到容器中。
2、基本概念
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念
1)Collection。一个独立元素的序列,这些序列都服从一条或者多条规则。如List必须按照顺序保存对象,Set不能有重复元素。Queue按照规则。
2)Map。一组成对的“键值对”对象,允许你用键来查找值。
3、List
ArrayList:擅长随机访问元素,添加和删除比较慢。
LinkedList:擅长添加和删除元素,查找比较慢。
4、迭代器
使用方法iterator()要求容器返回一个Iterator。
使用方法next()获取下一个元素
使用方法hasNext()检查序列中还有没有元素
使用方法remove()将迭代器新近返回的元素删除。
1)listIterrator
它是Iterator的子类型,可以双向移动。
5、LinkedLIst
链式
6、Stack
先进后出。
7、Set
不保存重复的对象。
HashSet 无序
TreeSet 有序
8、Map
键值型
第十二章 通过异常处理错误
1、自定义异常
<span style="white-space:pre"> </span>class MyException extends Exception{
<span style="white-space:pre"> </span>public MyException(String str){
<span style="white-space:pre"> </span>super(msg);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>try{
<span style="white-space:pre"> </span>throw new MyException("自定义异常");
<span style="white-space:pre"> </span>}catch(Exception e){
<span style="white-space:pre"> </span>e.printStackTrace(System.out);
<span style="white-space:pre"> </span>}
2、捕获所有异常
<span style="white-space:pre"> </span>try{
throw new MyException("自定义异常");
}catch(Exception e){
print(e.getMessge());
print(e.getLocalizedMessage());
print(e)
e.printStackTrace(System.out);
}
e.getStackTrace();
调用的方法栈,斩顶最后一个方法调用,栈底第一个方法调用。
3、Java标准异常
Throwable这个Java累呗用来表示任何可以作为异常被抛出的类。
1)Exception
2 )Error