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 文献