内部类
1.一个Java文件中可以包含多个class,但是只能有一个public class,如果一个类定义在另一个类内部可以称之为内部类
书写格式:
InnerClassDemo.InerClass inner =new InnerClassDemo().new InerClass();
优点:内部类可以轻松的访问外部类的私有方法
外部类访问内部类:可以通过创建对象来进行访问内部类(代码有重复,而其他类只能访问public方法或属性)
public class inner {
private int d=7;
public static void main(String[] args) {
inner c=new inner();
c.show();
}
public void show(){
inner.innerP i =new inner().new innerP();
System.out.println(i.a);
innerP aaa=new innerP();
System.out.println(aaa.a);
i.b();
aaa.b();
}
public class innerP{
private int a=2;
public void b(){
System.out.println(d);
}
}
}
注:1.创建内部类的时候,需要在内部类前面添加外部类进行修饰
2.内部类中不能创建静态属性
3.外部类和内部类有同名的变量的时候,内部类优先调用内部类的同名变量,若要访问外部类的同名变量,要使用 “外部类.this.变量名”
4.主方法在外部类里面,可以省略:
InerClass inner =new InnerClassDemo().new InerClass();
内部类的分类:
1.匿名内部类:适合只需使用一此的类(使用场景很有限)
new interface(){添加未实现的代码}
2静态内部类:使用static关键字进行修饰
外部类.内部类 类的引用名称=new 外部类类名.内部类().方法名
InerClass inner =new InnerClassDemo.InerClass();
3.方法内部类:将内部类定义在外部类的方法中 (了解)
使用的时候只能在方法中创建对象,因为此class的作用域就是当前方法
当方法在传递参数的时候
异常
异常:表示程序在运行过程中出现的不正常情况
注:相同的代码根据参数和输入的不同,可能会发生异常有可能不会发生异常,应该在写代码的过程中尽可能保证正确性
关键字:try catch finally throw throws
捕获异常:
try{代码逻辑}catch(Exception e){异常处理逻辑}finally{}(可以写具体的异常,可以针对每一种异常进行更细节的处理,但是记得最后加上所有异常)
e.printStackTrace():打印异常堆栈异常信息,可以从异常信息最后一行开始追踪,寻找自己编写的java类
System.out.println(e.getMessage()):用的比较少