------- android培训 java培训、期待与您交流! ----------
一、内部类
为什么要定义内部类:类是用于描述事物的,而事物如果还有具体的事物,而且这个内部的事物在访问者所属事物中的内容
内部类成员方法调用,内部类的局部变量(x),内部类的成员变量(this.x),外部类的成员变量(Outer.this.x)
内部类访问外部类的成员:非静态内部类可以访问非静态成员或静态成员,静态内部类可以访问外部静态成员
外部类访问内部类的成员:非静态外部类,可以访问静态的内部类和非静态内部类,静态外部类,只可以访问静态内部类.
static修饰符
内部类被静态修饰:随着外部类的加载而加载
只能访问外部类中的静态成员.
访问静态内部类中非静态成员. Outer1.Inne2r().method();
访问静态内部类中的静态成员. new Outer1.Inner2().function();
内部类没有被静态修饰:
内部类的成员也没被静态修饰 new Outer1().new Inner2().method();
内部类的成员被静态修饰,就会报错.
匿名对象的用处:
1.匿名对象:当对象只用一次的时候,可以用匿名对象.2.可以将匿名对象作为实际参数传递
匿名内部类:
格式:new 父类名() {
重写的方法
};
定义:其实就是一个匿名子类对象,
前提是:内部类需要继承或者实现外部类或者接口。
二、异常
异常的定义:在运行时期发生的一些不正常情况,就是异常.
异常的由来:程序运行时总会出一些不正常的情况,java语言对这些不正常情况进行描述和封装.不正常情况的对象
异常体系:
Throwable
---Error(严重性的问题):一般都是由jvm底层抛出来的问题,通常不需要处理.直接修改程序即可.
---Exception(可以解决的):是可以定义针对性的处理方式对该种情况进行处理.
异常分类:异常分为两种
1.编译异常
当我们对java文件进行编译时,就要求我们对产生的异常进行处理,这种异常就是编译异常。
Exception类以及除了RuntimeException体系中的其它类都是编译异常。
2.运行异常
我们可以不用对其进行处理,如果出现问题,jvm会处理.
RuntimeException以及其子类都是运行异常
无论是编译异常还是运行异常,我们都可以人为的对其进行处理。
异常的抛出:
throw 与 throws区别
1.throw用在方法内,throws用在方法的声明上
2.throw后面跟的是异常对象 throws后面跟的是异常类型。
3.throw后面只能跟一个对象 throws后面可以跟多个异常类型。
异常捕捉:IO流的例子
try {
产生异常的代码块
}
catch(异常对象) {
处理异常的代码块
}
finally {
关闭动作
}
注:finally:因为无论是否产生异常,finally最后都会被执行。