Java---内部类

1.内部类

 1 package Demo1.JavaSe;
 2 //学习内部类
 3 public class InnerClass {
 4 
 5     private int id=10;
 6 
 7     public void out(){
 8         System.out.println("外部类的OUT方法!!");
 9     }
10     //内部类
11     public  class  Inner{
12 
13         public void in(){
14 
15             System.out.println("内部类的IN方法!!"+id);
16         }
17     }18 
19 }

 

2.静态内部类

package Demo1.JavaSe;
//学习内部类
public class InnerClass {

    private int id=10;

    public void out(){
        System.out.println("外部类的OUT方法!!");
    }
    //内部类
    public  class  Inner{

        public void in(){

            System.out.println("内部类的IN方法!!"+id);
        }
    }
    public static class  Inner2{

        public void in(){
            //此处不能加载id,直接编译错误。
             //为什么加入static后就拿不到id了,初始化先后的问题,
//如果内部类是static  的,他就先初始化了
            System.out.println("静态内部类的IN方法!!");
        }
    }


}   

 

3.局部内部类

package Demo1.JavaSe;
//学习内部类
public class InnerClass {

    private int id=10;

    public void out(){
        System.out.println("外部类的OUT方法!!");
    }
    //内部类
    public  class  Inner{

        public void in(){

            System.out.println("内部类的IN方法!!"+id);
        }
    }
    public static class  Inner2{

        public void in(){
            //此处不能加载id,直接编译错误。
            System.out.println("静态内部类的IN方法!!");
        }
    }
   //局部内部类
   public void  InnerTo(){
        class  InnerByFunction{
            public  void getByFunction(){
                System.out.println("局部内部类");
            }
        }
   }

}

3.局部内部类:

 

1 interface  AnonymousInner{
2     public void AnonymousFun();
3 }

 

 

 

 
//没有名字的内部类
new AnonymousInner() { @Override public void AnonymousFun() { System.out.println("匿名内部类!!!"); } };

 

测试方法:

 1         //new 一个外部内
 2         InnerClass innerClass = new InnerClass();
 3 
 4         innerClass.out();
 5 
 6         //new 一个内部类
 7         //InnerClass.Inner inner = new InnerClass.Inner();//这样是报错的,前提它必须是静态的
 8 
 9         InnerClass.Inner inner = innerClass.new Inner();
10 
11         //可以看出内部可以获取外部类的私有属性。
12         inner.in();

测试结果:

 

posted on 2020-07-22 13:23  白嫖老郭  阅读(95)  评论(0编辑  收藏  举报

导航