java定义在局部的内部类、匿名内部类 (接《c++与java嵌套类比较》)

原址:http://blog.youkuaiyun.com/a450828540/article/details/9045067


上文只简单说了java中的内部类常用方式,这里再介绍下一些特殊情况:定义在局部的内部类,匿名内部类


定义在局部的内部类:

  1. //java,不访问局部变量的局部内部类  
  2.   
  3. class outer  
  4. {  
  5.     int x=3;  
  6.   
  7.     void method()  
  8.     {  
  9.        class inner                   //定义在局部的内部类  
  10.        {  
  11.            void function()  
  12.            {  
  13.                System.out.println("");  
  14.            }  
  15.         }  
  16.         new inner().function();     //若想在main()函数中,调用new outer().method()时调用function(),就要建立一个inner对象  
  17.     }  
  18. }   
  19.   
  20. //main()函数略去  

  1. //java,访问局部变量的局部内部类  
  2.   
  3. <pre name="code" class="cpp">class outer  
  4. {  
  5.     int x=3;  
  6.   
  7.     void method(final int a)         //final 类型参数  
  8.     {  
  9.        final int y;                  //final 类型变量  
  10.        class inner                        
  11.        {  
  12.            void function()  
  13.            {  
  14.                System.out.println(a);//此处使用局部变量y或者传递进来的参数a皆可,  
  15.                                        //但是,注意,必须是final类型的变量  
  16.            }  
  17.         }  
  18.         new inner().function();          
  19.     }  
  20. }   
  21.   
  22. //main()函数略去</pre>  
  23. <pre></pre>  
  24. <pre></pre>  
  25. <p></p>  
  26. <pre></pre>  

匿名内部类:

1.匿名内部类其实就是内部类的简写形式

2.定义匿名内部类必须继承一个类或实现一个接口

  1. //java,匿名内部类  
  2.   
  3. abstract class inner          //此类也可以不是抽象的,若非抽象,下面也就不是必须重写方法  
  4. {  
  5.     abstract void show();    //若此类方法过多,不宜使用匿名内部类,这样会造成重写每个方法,影响阅读  
  6.  }  
  7.   
  8. class outer  
  9. {  
  10.     int x=3;  
  11.   
  12.     public void function()  
  13.     {  
  14.         new inner()                    //匿名内部类格式:  
  15.         {                                //  new 父类类名()  
  16.              void show()                 //  {  
  17.              {                           //         方法定义  
  18.                 System.out.println("");  //     
  19.               }                          //   }.调用的方法名();  
  20.          } .show();  
  21.     }      
  22. }   
  23.   
  24. //main()函数略去 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值