初识Java2
异常
try:监控区域
catch:捕获异常
finally:处理善后工作
throw:主动抛出异常,一般在方法中使用
throws
成员内部类
需要依赖外部类对象
调用外部类属性:
可直接访问其外部类的属性.方法
## 静态内部类
(相当于外部类)
不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员
可直接调用其自己的属性
调用外部类属性:1.先创建外部类对象2.调用外部类对象的属性
调用静态内部类的静态属性:类名.属性
(只有内部类才用static来修饰,普通的类不行)
private static int count = 1000;
//方法
public void show(){
// 调用外部类的属性
// 1. 先创建外部类对象
Outer outer = new Outer();
// 2. 调用外部类对象的属性
sout(outer.name);
sout(outer.age);
// 调用静态内部类的属性和方法
sout(address);
sout(phone);
// 调用静态内部类的静态属性
sout(Inner.count);
}
}
}
// 测试类
public class Test{
psvm(String[] args){
// 直接创建静态内部类对象
Outer.Inner inner = new Outer.Inner();
inner.show();
}
}
## 局部内部类
定义在外部类的方法中,作用范围仅限于当前的方法,不能加任何访问修饰符
访问外部类的属性 【外部类.this.属性】
访问内部类的属性 【this.属性】
// 外部类
public class Outer{
//实例变量
private String name = "刘德华";
private int age = 35;
//方法
public void show(){
// 定义局部变量
String address = "sz";
// 局部内部类:注意不能加任何访问修饰符
class Inner{
private String phone = "11234";
private String email = "ldh@qq.com";
public void show2(){
// 访问外部类的属性
sout(name); // 相当于 Outer.this.name
sout(age);
// 访问内部类的属性
sout(this.phone);
sout(this.email);
// 访问局部变量 jdk1.7要求必须常量final、jdk1.8自动添加final
}
}
// 创建局部内部类对象
Inner inner = new Inner();
inner.show2();
}
}
// 测试类
public class Test{
psvm(String[] args){
// 创建外部类对象
Outer outer = new Outer();
outer.show();
}
}
##匿名内部类
没有类名的局部内部类
必须继承一个父类or接口
定义类、实现类、创建对象的语法合并,只能创建一个该类的对象
// 使用匿名内部类优化(相当于创建了一个局部内部类)
Usb usb = new Usb(){ // Usb为一个接口
@Override
public void service(){
sout("连接电脑成功,fan开始工作")
}
};
usb.service();