内部类、局部内部类、静态内部类、匿名内部类
调用内部类比较特殊:OuterClass.InnerClass innerClass = outerClass.new InnerClass();
public class OuterClass { private int i = 10; //1成员内部类 class InnerClass{ public void getOuterProperty(){ System.out.println("【内部类获取外部类的私有属性的值】="+i); } } //2局部内部类 public void getLocalClass(){ class LocalClass{//局部内部类上不能有修饰符,或者只能有个final修饰符 public int local_m1(){ System.out.println("【局部内部类获取外部类私有属性】="+i); return (i + 100); } } LocalClass localClass = new LocalClass(); int local_result = localClass.local_m1(); System.out.println("【调用局部内部类方法的返回值+100】="+local_result); } //3静态内部类 public static class StaticInnerClass{ int i = 1000; public void staticInner_m1(){ System.out.println("【静态内部类】="+i); } } //4匿名内部类 Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("【匿名内部类】"); } }); //4匿名内部类 AnonymousClass anonymousClass = new AnonymousClass() { @Override public void anonymousClass_m1() { System.out.println("【匿名内部类】"); } }; public static void main(String[] args) { OuterClass outer = new OuterClass(); //1调用成员内部类 OuterClass.InnerClass ic = outer.new InnerClass(); ic.getOuterProperty(); //2调用局部内部类 outer.getLocalClass(); //3调用静态内部类 StaticInnerClass sic = new StaticInnerClass(); sic.staticInner_m1(); //4调用匿名内部类 Thread thread = outer.thread; thread.start(); //4调用匿名内部类 AnonymousClass ac = outer.anonymousClass; ac.anonymousClass_m1(); } } interface AnonymousClass { void anonymousClass_m1(); }