匿名内部类从某种问题上就是说,该怎么去创建,怎么去访问的问题?
它的本质是借助了父类或者接口的名字,他可以直接new 抽象类(){}
new 接口名(){},当然了,也可以直接new 普通类(){};
然后我们去实现或者重写里面的方法。
因为没有名字,上面就是完整的主体,我们可以通过主体来直接调用内部的函数
有一种“自写自调”的感觉
我们可以明确说明,匿名内部类是可以在其他的类里面写上类的,因为它只能依赖其他类的地方才能生存,就像一个病毒一样
匿名内部类的野心比较大,它想的是我还可以有名字:
但是有名字我也得依靠别人才能生活
抽象类 名字 = new 抽象类(){
//本质还是继承或者是实现
}
因为他是一个整体,所以可以直接当一个实际参数传入到一个函数上面去
error与exception来做比较:
谁的错误等级比较高,error我存在本身就是一个错误,所以还用比等级吗?
遇到了如何区分?error我本质就是一个错误
错误的发生:理解成严重的不可逆转的恐怖事件,比如内存溢出的问题,我在程序出现这样问题,没办法解决,除非手动配置内存分配参数,这就好像是一架失控飞机还有1秒就要撞五角大楼,不可提前避免。
异常能避免,生活中的小事,比如我买东西,少找了我急毛线,我提前设置一下,我就拿出刚好买东西足够的钱就可以了
多说一点:
异常捕获,从小到大,就像小时候排队一样,从小到大进行排队领取东西
异常捕获,尊老爱幼
不知道是什么异常捕获的时候,就找他爸爸Exception,这个能捕获各种类型的异常
简单问一句:方法在什么时候回马上停止执行呢?
遇到return ,还有一个是throw
又一个问题come in?
throw 与 throws的区别?
throw是在函数内部抛(异常是可以在内部直接抛出的),throws是在方法的上面抛,可以一次抛出多个异常
我们必须有一个概念存在脑海之中?
系统提供的异常类不足,就自己写异常,那么咋写?
继承ecxeption ,简单一个东西,我构造方法调用父类的new Exception("信息")-》super(...)
然后就可以调用相应的三个方法
toString()...
getMessage()...得到异常的信息
printStackTrace()..信息链路追踪
如果说内部抛出一个异常,方法上面用不用抛出一个异常呢?必须也抛出相同的异常
有一句话是怎么说的呢?如果调用一个抛出异常的方法,那么我们必须对此方法进行处理
那么这个异常咋来的?它不就是从原方法里面抛出的嘛,因为这个方法本身存在异常,原方法内部抛出一个方法,原方法
上面也应该抛出一个相应的异常