黑马程序员---内部类以及异常的使用

------- android培训java培训、期待与您交流! ----------

内部类:

1,内部类可以直接访问外部类中的成员,包括私有。

2,外部类要访问内部类要创建内部类的对象。

怎么直接访问内部类中的成员?

内部类所在类名.内部类 引用变量名(自定)=new 内部类所在类名().new 内部类();

例:

Tips:内部类定义在局部时,

1,不可以被成员修饰符修饰,静态,私有

2,可以直接访问外部类中的成员,因为还持有外部类中的引用。

但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。

Tips:当内部类成员是静态的时候,此内部类也须是静态。

当外部静态类要访问内部类时,内部类也须是静态。

内部类的应用:

描述事物时,事物的内部还有事物,改事物用内部类来描述。因为内部事物在使用外部事物的内容。(内部事物要直接访问外部事物)

匿名内部类:

1,匿名内部类是内部类的简写格式。

2,定义匿名内部类的前提:

内部类必须继承一个类或者实现接口。

用以前的方法写:

Class Inner extends AbsDemo
{
	Void show()
	{
		S.o.p();
	}
}
Public void function()
{
	New Inner ().show();
}


 

异常:

就是程序在运行时出现的不正常情况。(把问题封装成对象就是异常)

异常的由来:问题也是现实生活中的一个具体的事物,也可以通过java的类的形式进 行描述,并封装成对象。

问题划分

严重的问题:通过Error类进行描述。

对于Error一般不编写针对性代码进行处理。

非严重问题:通过Exception类进行描述。

对于Exception可以使用针对的处理方式进行处理。

无论ErrorException都有些共性内容。

就可以抽取,他们的父类是Throwable

异常的处理:

Java提供了特有语句进行处理。

Class Demo
{
	Int div(int a ,int b)
	{
		Return a/b;//出现异常,抛给catch
	}
}
Class ExceptionDemo
{
	Public static void main(String[] args)
	{
		Demo d=new Demo();
		try 
		{
			需要被检测的代码;
		}
		Catch (异常类(Exception) 变量)//捕获异常
		{
			处理异常的代码;处理方式
		}
		Finally
		{
			一定会执行的语句
		}
	}
}


 

对多异常的处理throws 异常名,(逗号分隔)另一个异常;

1,;生命异常时,建议声明更为具体的异常,便于处理的更具体。

下边定义两个catch来分别捕捉。

2,对方声明几个异常,就对应有几个catch块,不要定义多余的catch块。

若多个catch块异常出现继承关系,那么将父类catch块放在最下边。

建议:在进行catch处理时,catch中一定要定义具体处理方式。

自定义异常:

项目中会出现特有问题,

这些问题并未被java描述封装对象。对于这些特有问题可以按照问题封装思想对其进行自定义异常封装。

函数内出现异常函数需要声明:throws

因为父类中把异常信息操作完成了。

所以子类只要在构造时,将异常信息传递给父类通过super语句

就可以直接通过getMesssage方法获取自定义的异常信息了。

为什么继承Exception

异常体系有个特点:异常类和异常对象都会被抛出(可抛性)

可抛性是throwable体系中的独有特点,只有这个体系中的类和对象才可以被throwsthrow操作

定义异常类

Class mingziException extends Exception(继承Exception)
{
	mingziException(String msg)
	{
		super (msg);
	}
}
Class Demo
{
	Int div(int a ,int  b)throws mingziException
	{
		If(b<0)
			throw new mingziException();//手动通过throw关键字抛出一个自定义异常对象
		Return a/b;
	}
}


 

Throw使用在函数内,后面跟异常对象。

Throws使用在函数上,后面跟异常类,可以多个,逗号隔开。

 Exception中的RuntimeException特殊

函数内抛出异常,函数上不用声明

函数上声明了异常,调用者可以不用进行处理。

异常分两种:

1,编译时被检测的异常

2,编译时不被检测的异常(运行时异常。就是RuntimeException以及其子类)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值