zoukankan      html  css  js  c++  java
  • [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);
        }
    }




  • 相关阅读:
    (转)Go和HTTPS
    (转)Using Python3.5 in Ubuntu
    linux下配置某程序的sudo不用输密码
    双系统linux+win之血的教训
    (转)如何修复ubuntu的UEFI引导
    Android ——Toolbar开发实践总结(转)
    Android——Fragment 真正的完全解析(下)(转)
    Android—— Fragment 真正的完全解析(上)(转)
    android——官方下拉刷新组件SwipeRefreshLayout(转)
    Android——使用Toolbar + DrawerLayout快速实现高大上菜单侧滑(转)
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786763.html
Copyright © 2011-2022 走看看