内部类访问规则;
1,内部类可以直接方访问外部类中的成员,包括私有
之所以可以直接访问外部类中的成员,是因为内部类中持有一个外部类的引用,格式 外部类名.this
2,外部类要访问内部类,必须建立内部类对象
访问格式:
当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中
可以直接建立内部类对象
格式
外部类名.内部类名 变量名=外部类对象.内部类对象
2,当内部类在成员位置上,就可以被成员修饰符修饰
比如,private:将内部类在外部类中进行封装
static :内部类就具备static特性
当内部类被static 修饰后,只能直接访问外部类中的static成员。出现了访问局限。
在外部其他类中,如歌直接访问static内部类的非静态成员呢?
new.Outer.Inner().function();
在外部其他类中,如何直接访问static内部类的静态成员呢?
uter.inner.function();
注意:当内部类中定义了静态成员,该内部类的static的
当外部类中的静态方法访问内部类时,内部类也必须是static的
异常就是程序运行时出现不正常情况
异常由来;问题是也是现实生活中一个具体的食物,也可以通过java的类的形式进行描述。并封装成对象。其实就是java对不正常情况进行描述后的对象体现
对于问题的划分;1,验证的问题,一种是非严重的问题。
对于严重的,java通过error进行描述。error一般不编写针对性代码对其进行处理
对于不严重的,java通过exception类进行描述。exception可以使用针对性的处理方式进行处理
异常处理
java提供方了特有语句进行处理
try
{
需要被检测的代码
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句
}
3.对捕获到的异常对象进行常见方法操作
String getMessage();
在函数上声明异常。
编译提高安全性,让调出进行处理。不让编译失败
对多异常的处理
1.声明异常时,建议声明更为具体的异常。这样处理的可以更具体。
2,对方声明几个异常,就应该对于有几个catch快
如果多个catch快中的异常出现继承关系,父类异常catch快放最下面
建议在进行catch处理时,catch中一定要定义具体的处理方式
也不要简单定义一句e.printStackTrace
也不要简单的就书写一条输出语句
因为项目中会出现特有的问题
而这些问题并没被java锁描述并封装对象
所以对于这些特有的问题可以按照java的对问题封装思想
将特有的问题。进行自定义异常封装
自定义异常
当在函数内部出现了throw跑出异常对象,那么就必须要给对应的处理动作
要么在内部try catch 处理
要么在函数上声明让调用者处理
一般情况在,函数内出现异常,函数上需要声明
发现打印的结果中只有出现的名称,却没有异常 的信息
因为自定义的异常并没定义信息
如何定义异常信息呢?
因为父类中银吧异常信息的操作都完成了
所以子类只要在构造时,将异常信息传递给父类通过super语句
那么就可以直接通过getMessage方法获取自定义的异常信息
自定义异常
必须是自定义类继承Exception
继承EXception
异常体系有一个特点,因为异常类和异常对象都被抛出
他们都具备克抛性。这个课抛性是Throwable这个体系中独有特点
只有这个体系中的类和对象才可以被throws和throw操作
throw和throws的区别
throws使用在函数上 在()和{}之间
throw使用在函数内
throws后面跟的是异常类。可以跟多个。用逗号隔开
throw后面的是异常对象
Exception中有一个特殊的子类异常RuntimeException 运行时异常
如果在函数内容跑出该异常,函数上可以不用声明,编译一样通过
如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过
之所以不用再函数声明,是因为不需要让调用者处理
当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况。希望停止程序后,对代码进行修正。
自定义异常时,如果该异常的发生,无法再继续进行运算
就让自定义异常继承RuntimeException
对于异常分两种
1.编译时被检测的异常
2.编译时不被检测的异常(运行时异常。RuntimeException以及其子类)
|
|