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




  • 相关阅读:
    jquery Flexigrid只选择一行,增加双击事件,获取数据库ID
    [工具库]JOJSONBuilder工具类——一键把多个bean对象数据转换为JSON格式数据
    java 观察者模式
    [工具库]JOXMLBuilder工具类——一键把多个bean对象数据转换为XML格式数据
    JVM原理
    WEB项目的分层结构
    一刻钟精通正则表达式
    [Java]Stack栈和Heap堆的区别(终结篇)[转]
    [java]二、八、十、十六进制之间的转换
    java 适配器模式
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786763.html
Copyright © 2020-2023  润新知