• [Java 内部类 ] 的四个知识点 《Java开发实战经典》


    1, 内部类 可以声明成 public 或 private, 对其访问的限制与成员变量和成员方法完全相同
    package com.qunar.basicJava.javase.p5OO;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-5-19 11:54
     */
    /**
     * 内部类 可以声明成 public 或 private, 对其访问的限制与成员变量和成员方法完全相同
     */
    class Outer1 {
        private String info = "hello world!!";
        class Inner {
            public void print() {
                System.out.println(info);
            }
        }
        public void fun() {
            new Inner().print();
        }
    }
    public class InnerClassDemo01 {
        public static void main(String[] args) {
            new Outer1().fun();
        }
    }
    对比 1 中的,不用内部类 实现 例子1
    package com.qunar.basicJava.javase.p5OO;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-5-19 12:01
     */
    
    /**
     * 不用内部类 实现 例子1
     */
    class Outer {
        private String info = "hello world!!";
        public String getInfo() {
            return this.info;
        }
        public void fun() {
            new Inner(this).print();
        }
    }
    class Inner {
        private Outer out = null;
        public Inner(Outer out) {
            this.out = out;
        }
        public void print() {
            System.out.println(out.getInfo());
        }
    }
    public class InnerClassDemo02 {
        public static void main(String[] args) {
            new Outer().fun();
        }
    }
    
    3, 使用 static 定义内部类
    package com.qunar.basicJava.javase.p5OO;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-5-19 11:53
     */
    
    /**
     * 使用 static 定义内部类
     */
    class Outer3 {
        private static String info = "hello world!!";
        static class Inner {
            public void print() {
                System.out.println(info);
            }
        }
        public void fun() {
            new Inner().print();
        }
    }
    public class InnerClassDemo03 {
        public static void main(String[] args) {
            new Outer3.Inner().print();
        }
    }
    
    4, 在外部访问内部类   与   5, 在方法中定义内部类
    package com.qunar.basicJava.javase.p5OO;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-5-19 11:54
     */
    
    /**
     * 在外部访问内部类
     */
    class Outer4 {
        private String info = "hello world!!";
        class Inner {
            public void print() {
                System.out.println(info);
            }
        }
        public void fun() {
            new Inner().print();
        }
    }
    
    /**
     * 在方法中定义内部类
     */
    class Outer5 {
        private String info = "hello world5!!";
        public void fun(final int temp) { // 必须是 final, 否则 WA
            class Inner {
                public void print() {
                    System.out.println("类中的属性 :  " + info);
                    System.out.println("方法中的属性 :  " + temp);
                }
            }
            new Inner().print();
        }
    }
    public class InnerClassDemo04 {
        public static void main(String[] args) {
            Outer4 out = new Outer4();
            Outer4.Inner in = out.new Inner();
            in.print();
            //------------//
            new Outer5().fun(30);
        }
    }




  • 相关阅读:
    HDU 3879 Base Station 最大权闭合图
    自己定义头像处理,轻巧有用,非常多强大的小技巧在里面哦,快来赞美我一下吧^_^
    【Spring实战】—— 8 自动装配
    【Spring实战】—— 7 复杂集合类型的注入
    【Spring实战】—— 6 内部Bean
    【Spring实战】—— 5 设值注入
    【Spring实战】—— 4 Spring中bean的init和destroy方法讲解
    【Spring实战】—— 3 使用facotry-method创建单例Bean总结
    【Spring实战】—— 2 构造注入
    【Spring实战】—— 1 入门讲解
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786763.html
Copyright © 2020-2023  润新知