内部类
内部类 可以 访问 外部类 当中的成员
外部类 不能 直接访问 内部类 当中的成员
static方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。
static代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
1. final修饰类:
final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。
2. final修饰方法:
final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写。
此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,
将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。
异常处理:
提高程序的容错能力、稳定性、健壮性
异常:不正常
java异常:
try {
} catch() {
} catch() {
} catch() {
} finally {
}
java异常类的继承关系
|-- Throwable
|-- Error
|-- Exception
|-- RuntimeException
|-- 非运行时异常
|-- IOException
异常对象的时候
当异常被捕获到是,异常对象就会自动创建
e.getMessage() // 输出异常信息
e.printStackTrace() // 在控制台上打印输出异常的错误情况(调用栈情况)
自定义异常类的使用
在项目开发时,一般一个项目需要自定义一个异常,用来传递信息
在java中,自定义异常非常简单,只要继承了Exception类(称为Exception的子类)即可,该类就是一个异常类
人为的抛出异常:
throw关键字抛出异常
throw 异常对象
第二种解决异常的方案:
抛出异常,由上层解决
方法名字后面 throws 异常名称 {
}
一旦使用抛出方案
异常将由调用者来解决
异常的分类:
|-- 运行时异常:继承了RuntimeException的异常
特点是:只有在运行时,才能知道是否会有异常
|-- 非运行时异常(编译型异常):
特点是:在编译时,就会报错,必须处理