N种内部类

内部类

访问内部类

public class Outer {

   private int id=10;
   public void out(){
       System.out.println("这是外部类的方法");
  }

   public  class Inner{
       public void in(){
           System.out.println("这是内部类的方法");
      }
public class Application {

     public static void main(String[] args) {
        Outer outer = new Outer();//先new外部类

       //通过这个外部类实例化内部类~
       Outer.Inner inner = outer.new Inner();//再用外部类对象new内部类
       inner.getID();

  }
}

直接访问外部类的私有变量

package com.oop.demo10;

public class Outer {
   //局部内部类
   public  void method(){
       class  Inner{
           public void  in(){

          }
      }
  }

   private int id=10;
   public void out(){
       System.out.println("这是外部类的方法");
  }

   public  class Inner{
       public void in(){
           System.out.println("这是内部类的方法");
      }

       //获得外部类的私有属性~
       public void getID(){
           System.out.println(id);
      }

  }
}

静态内部类

静态内部类不能访问非静态属性

package com.oop.demo10;

public class Outer {
   //局部内部类
   public  void method(){
       class  Inner{
           public void  in(){

          }
      }
  }

   private int id=10;
   public void out(){
       System.out.println("这是外部类的方法");
  }

   public  class Inner{
       public void in(){
           System.out.println("这是内部类的方法");
      }

       //获得外部类的私有属性~
       public static void getID(){
           System.out.println(id);//id报错
      }

  }
}

局部内部类

public class Outer {
   //局部内部类
   public  void method(){
       class  Inner{
           public void  in(){

          }
      }
  }
}

匿名内部类

package com.oop.demo10;


public class Test {
   public static void main(String[] args) {
       //没有名字初始化类
       new Apple().eat();//匿名内部类

       new UserService(){//匿名实现接口的类

           @Override
           public void hello() {

          }
      };
  }
}
class Apple{
   public void eat(){
       System.out.println("1");
  }
}
interface UserService{
   void hello();
}
 
posted @ 2022-05-10 22:22  火龙水龙  阅读(19)  评论(0编辑  收藏  举报