intelli

导航

 

0. 概要

1. 内部类的几种形式

1.1 普通内部类

class Outter1 {
    private String firstname = "outfirstname";

    // 普通内部类
    class Inner1 {
        private String name = "in1";

        public void inPrint() {
            String name = "inprint";

            System.out.println("方法局部变量访问:" + name);
            System.out.println("内部类成员变量访问:" + this.name);
            System.out.println("外部类普通成员变量访问:" + Outter1.this.firstname);
        }
    }

}
public class InnerClassDemo1 {
    public static void main(String[] args){

        System.out.println("========这是普通内部类!========");
        Outter1.Inner1 in1 = new Outter1().new Inner1();
        in1.inPrint();

    }
}
========这是普通内部类!========
方法局部变量访问:inprint
内部类成员变量访问:in1
外部类普通成员变量访问:outfirstname

1.2 静态内部类

1.3 方法内部类

2. 内部类之Demo

2.1 Demo源码

package com.yizhou.InnerClass;

/**
 * Created by dongyizhou on 2017/4/5.
 */

class Outter {
    private String firstname = "outfirstname";
    private static String secondname = "outsecondname";

    // 普通内部类
    class Inner1 {
        private String name = "in1";

        public void inPrint() {
            String name = "inprint";

            System.out.println("方法局部变量访问:" + name);
            System.out.println("内部类成员变量访问:" + this.name);
            System.out.println("外部类普通成员变量访问:" + Outter.this.firstname);
        }
    }

    // 静态内部类
    static class Inner2 {
        private String name = "in2";

        public void inPrint() {
            String name = "inprint";

            System.out.println("方法局部变量访问:" + name);
            System.out.println("内部类成员变量访问:" + this.name);
            System.out.println("外部类成员变量访问:" + new Outter().firstname);
            System.out.println("外部类静态成员变量访问:" + Outter.secondname);

        }
    }

    // 方法内部类
    public void outPrint(final String str){

        class Inner3 {
            private String name = "in3";

            public void inPrint(){

                System.out.println("方法局部变量访问" + str);
                System.out.println("内部类成员变量访问" + name);
            }
        }

        new Inner3().inPrint();
    }

}

public class InnerClassDemo {
    public static void main(String[] args){

        System.out.println("========这是普通内部类!========");
        Outter.Inner1 in1 = new Outter().new Inner1();
        in1.inPrint();
        System.out.println("\n");

        System.out.println("========这是静态内部类!========");
        Outter.Inner2 in2 = new Outter.Inner2();
        in2.inPrint();
        System.out.println("\n");

        System.out.println("========这是方法内部类!========");
        Outter outter = new Outter();
        outter.outPrint("outPrint");
        System.out.println("\n");

    }
}

2.2 Demo输出

========这是普通内部类!========
方法局部变量访问:inprint
内部类成员变量访问:in1
外部类普通成员变量访问:outfirstname

========这是静态内部类!========
方法局部变量访问:inprint
内部类成员变量访问:in2
外部类成员变量访问:outfirstname
外部类静态成员变量访问:outsecondname

========这是方法内部类!========
方法局部变量访问outPrint
内部类成员变量访问in3

3. 附件和文献

3.1 附件

源码:ArrayListMultimapTest

3.2 文献

posted on 2017-04-05 20:15  intelli  阅读(104)  评论(0)    收藏  举报