N种内部类

内部类

内部类就是在一个类的内部定义一个类,比如A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。

1.成员内部类

通过外部类来实例化内部类,内部类可以获得外部类的(私有)属性和方法

2.静态内部类

通过外部类来实例化内部类,内部类可以获得外部类的静态的属性和方法

3.局部内部类

方法中定义的类就是局部内部类

//外部类
public class Outer {

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

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

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

        //获得外部类的方法
        public void getout(){
            out();
        }

    }

    //静态内部类
    public static class Inner2{
        public void in(){
            System.out.println("这是内部类的方法!");
        }

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

        //获得外部类的方法
        public void getout(){
           // out();
        }

    }

    public void method(){
        //局部内部类
        class Inner3{

        }
    }

}

//一个java类中可以有多个class类,但是只能有一个public class类
class A{

}

 

public class Application {

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

        //通过外部类来实例化内部类
        Outer.Inner inner = outer.new Inner();
        inner.in();
        inner.getID();

    }

}

 

4.匿名内部类

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();
}

 

增加知识点:一个java类中可以有多个class类,但是只能有一个public class类

posted @ 2022-06-27 23:05  理暗  阅读(30)  评论(0)    收藏  举报