码迷,mamicode.com
首页 > 其他好文 > 详细

19、局部内部类和匿名内部类

时间:2014-12-18 23:35:16      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   使用   sp   div   log   bs   

package com.lei.duixiang;
/**
 * 局部内部类
 * 1、如果需要在方法中使用局部变量,该局部变量需要被设置为 final 类型
 * 2、换句话说,在方法中定义的内部类只能访问方法中 final 类型的局部变量
 * 这是因为在方法中定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期
 * 由于该局部变量被设置为final,所以不能在内部类中改变局部变量的值
 * @author Administrator
 * 
 * 匿名内部类 OutClass4
 */

interface Outinterface {
} // 定义一个接口

public class OutClass3 { // 局部内部类
    public Outinterface doit(final String x) {
        // 在 doit() 方法中定义一个内部类
        class InnerClass2 implements Outinterface {
            public InnerClass2(String s) {
                s = x;
                System.out.println(s);
            }
        }

        return new InnerClass2("doit");
    }

    /**
     * 在 doit() 方法 内部首先返回 一个 Outinterface 的引用,然后在 return 语句中插入一个自定义内部类的代码
     * 由于这个类没有名称,所以这里将该内部类成为匿名内部类
     * 实质上这种内部类的作用就是创建一个实现于 Outinterface 接口匿名类的对象
     * 匿名类的所有是实现代码都需要在大括号之间进行编写,语法如下:
     * return new  A(){    ...//内部类体    };
     * 在匿名内部类定义结束后,需要加分后标识
     * 这个分号并不是是代表定义内部类结束的标识,而是代表创建 Outinterface 引用表达式的标识
     * @author Administrator
     *
     */
    public class OutClass4 { // 匿名内部类
        public Outinterface doit(){    //定义 doit() 方法
            return new Outinterface(){    //声明 匿名内部类
                private int i = 0;
                public int getValue(){
                    return i;
                }
            };
        }
    }
    
    
    public static void main(String[] args) {
        OutClass3 out = new OutClass3();
        out.doit("Outinterface doit");
    }
}

 

19、局部内部类和匿名内部类

标签:style   blog   ar   color   使用   sp   div   log   bs   

原文地址:http://www.cnblogs.com/spadd/p/4172868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!