• [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);
        }
    }




  • 相关阅读:
    计算机基础
    POJO(PO)与javaBean的比较、以及DTO的说明
    Spring Assert(方法入参检测工具类-断言)
    Extjs tree的相关方法及配置项
    spring aop两种配置方式(1)
    Oracle存储过程中临时表的使用技巧
    文件上传
    java中的IO操作总结
    ExtJs文件上传(Ext.ux.form.FileUploadField)
    Extjs 属性控件[转载]
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786763.html
Copyright © 2020-2023  润新知