A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 381946250 中级黑马   /  2013-5-30 18:04  /  1730 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 381946250 于 2013-6-1 09:36 编辑

1、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
2、AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
1、return后,finally里面的代码也会执行。这就是finally一定会执行带来的好处:比如,数据库连接,不管前面怎么样,一定会执行finally里面的断开数据库连接操作。
2、不可以继承、不可以实现。类继承和实现是在定义类时完成的class A{...};匿名内部类是直接用来定义类然后定义对象然后使用里面的属性或者方法new B{..C..}.C;。
个人见解。

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
石贤芝 + 3 赞一个!
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
      finally是终极的,不管程序运行时是否出现异常, finally都是肯定要执行的。如果try块中的代码发生了异常,那么就会执行catch块中的代码,完后就会看有没有finally块,如果有,则进去,没有,则会跳出当前方法,不可能再执行catch块后面的代码。如果程序没有出现异常,那么catch中的语句不会执行,如果写在finally中 是肯定能运行的到的。

    使用匿名内部类有个前提条件:必须继承一个父类或实现一个接口
回复 使用道具 举报

finally{}里的代码,一定是要执行的,在return之后,也一定会执行。这就可以写一些比如关闭资源的代码了,
2、 匿名内部类 不可以继承吧,也不可以实现 接口的吧

class Inner extends A
{
    void show()
    {
              system.out.println();
    }
}//这是内部类继承


new A()
{
      void show()
       {
           sop();
       }

}//这是匿名内部类   



new A()
{
      void show()
       {
           sop();
       }

}.show();//这是隐名内部类的调用
回复 使用道具 举报
本帖最后由 胡浩 于 2013-5-31 09:11 编辑

第一个问题:发生异常后执行的顺序是:执行try块或catch块之前的语句,执行finally中语句,执行try块或catch块中的return语句退出。
第二个问题:匿名内部类首先就必须实现接口或者继承某个父类。它其实就是一个匿名的子类对象。
请看:abstract class Demo
{
abstract void show();
}这是父类
class Outer(){
       new Demo(){//匿名内部类,就是子类对象。实现了创建子类对象,覆盖和重写父类的show();
           void show();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马