导航

java内部类

Posted on 2016-05-22 11:53  4565892  阅读(102)  评论(0)    收藏  举报

在方法中定义的内部类,只能访问方法中final 类型的局部变量,这是因为在方法中定义的局部变量相当于一个常量,他的声明周期超出方法运行的声明周期,

package com.java.charpt11;

interface Outlnterface{//接口一
    public void f();
    
    
}

class OuterClass2{
    private class innerClass implements Outlnterface{
        //内部类的构造方法
        public innerClass(String s) {
            System.out.println(s);
        }
        @Override
        public void f() {
        System.out.println("访问内部类中的f()方法");

 

 

 


            
        }    
    }
    public Outlnterface doit()
    {
        return new innerClass("放问内部类构造方法");
    }    
}
interface OutLnterface2 //接口2
{
    }
class OuterClass3{
    public OutLnterface2 doit(final String x)//doit方法参数为final类型
    {
        
        
        class InnerClass2 implements OutLnterface2
        {
            public InnerClass2(String s) {
                s=x;
                System.out.println(s);
            }
            
            
        }
        
        return new InnerClass2("doit");
    }
    
    
    
    
}

class OuterClass4
{
    public OutLnterface2 doit()
    {
        return new OutLnterface2(){//声明匿内部类
            private int i=0;
            public int getValue()
            {
                
                return i;
                
                
            }
            
            
            
            
        };
        
        
        
    }




}

public class InterfaceInner {
    public static void main(String[] args) {
        OuterClass2 out=new OuterClass2();
        Outlnterface outinner=out.doit();
        outinner.f();
    }

}

 

2.声明匿名累不累所有实现的代码都需要在大括号内编写,语法

return  new A(){...

//内部类体};