美文网首页
Java内部类

Java内部类

作者: MVBin | 来源:发表于2017-05-23 11:07 被阅读13次

    含义

    将一个类的定义放在另一个类的定义内部。

    //一个普通的类
    public class OuterClass {
    
        //一个内部类
        class InnerClass1 {
            private int id = 1;
            public int getId() {
                return id;
            }
        }
    
        //一个内部类
        class InnerClass2 {
            private String name;
            public InnerClass2(String aName) {
                name = aName;
            }
            public String getName() {
                return name;
            }
        }
    
        //一个内部类
        class InnerClass3 {
            private String password = "pass";
            public InnerClass3() {
                System.out.println("pwd:" + password);
            }
            public String getPwd() {
                return password;
            } 
        }
    
        //一个方法
        public void user1() {
            InnerClass1 ic1 = new InnerClass1();
            InnerClass2 ic2 = new InnerClass2("lilei");
            System.out.println(ic1.getId() + " : " + ic2.getName());
        }
    
        //一个方法
        public InnerClass3 getIC3() {
            return new InnerClass3();
        }
    
        public static void main(String[] args) {
            OuterClass oc = new OuterClass();
            oc.user1();
            //获取内部类
            InnerClass3 ic3 = oc.getIC3();
            /*
             * 也可以获取内部类
            OuterClass.InnerClass3 ic31 = oc.getIC3();
            */
            System.out.println("pwd: " + ic3.getPwd());
        }
    }
    

    作用

    • 与外部类进行通讯:能访问其外部类的所有成员。
    • 一般来说,内部类继承自某个类或某个接口,内部类可以操作外部类对象,提供了进入其外围类的窗口。
    • 解决“多重继承”问题。
    • 闭包与回调。

    分类

    • 局部内部类:在局部作用域里定义的内部类(该类只在所在的局部作用域内有效)。
    • 匿名内部类:
    • 嵌套类:以static修饰的内部类(静态内部类),不需要内部类对象与其外部类对象有联系,不能从嵌套类对象中访问非静态的外围类对象。

    注意

    • 必须使用外部类的对象的引用去创建内部类,除非内部类是静态内部类(嵌套类)。
    • 创建内部类可以使用:外部类对象的引用.new 内部类 的方式进行创建。

    相关文章

      网友评论

          本文标题:Java内部类

          本文链接:https://www.haomeiwen.com/subject/uzmwxxtx.html