内部类

在一个类的内部再定义一个类就是内部类

  • 成员内部类
public class Outer {
    private int id=10;
    public void out(){
        System.out.println("这是外部类的方法");
    }
    class Inner{
        public void in(){
            System.out.println("这是内部类的方法");
            //获得外部类的私有属性
            System.out.println(id);
            //活得外部类的方法
            out();
        }
    }
}
public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
        outer.out();
        //通过外部类实例化内部类
        Outer.Inner inner = outer.new Inner();
        inner.in();
    }
}
  • 静态内部类

 

public class Outer {
    private int id=10;
    public void out(){
        System.out.println("这是外部类的方法");
    }
    public static class Inner{
        public void in(){
            System.out.println("这是内部类的方法");
            //获得外部类的私有属性
            System.out.println(id);//报错,静态内部类先加载
            //活得外部类的方法
            out();//报错,静态内部类先加载
        }
    }
}
  • 局部内部类 
public class Outer {
    //局部内部类
    public void method(){
        class Inner{
            public void in(){
                System.out.println("inner类");
            }
        }
    }
}
  • 匿名内部类
public class Outer {
    //局部内部类
    public void method() {
        //没有名字初始化类,不用将实例保存到变量中
        new Apple().eat();
        //匿名内部类
        new UserService(){

            @Override
            public void hello() {
                System.out.println("hello");
            }
        };
    }
}

//一个java类中可以有多个class类,但只能有一个 public class
class Apple {
    public void eat() {
        System.out.println("1");
    }
}
interface UserService{
    void hello();
}

 

posted @ 2022-03-31 10:44  格兰芬多剁剁剁  阅读(27)  评论(0)    收藏  举报