1 package com.testInner; 2 public class TestInner { 3 public static void main(String[] args) { 4 Outer.Inner inner = new Outer().new Inner();//定义一个内部类的对象,内部类对象是依赖外部类对象的,所以得这么创建 5 inner.show(); 6 } 7 } 8 //定义外部类 9 class Outer{ 10 private int age=90; 11 public void run() { 12 System.out.println("Run"); 13 } 14 //定义内部类 15 class Inner{ 16 private int age=10; 17 public void show() { 18 System.out.println("Inner‘s age is:"+age);//10 19 System.out.println("Outer‘s age is:"+Outer.this.age);//90 20 int age = 5; 21 System.out.println("Local variable‘s age is:"+age);//5 22 23 } 24 } 25 }
1 package com.testInner; 2 public class TestInner { 3 public static void main(String[] args) { 4 Outer.Inner inner = new Outer().new Inner();//错误, 5 修正:Outer.Inner inner = new Outer.Inner(); 6 inner.show(); 7 } 8 } 9 //定义外部类 10 class Outer{ 11 private int age=90; 12 public void run() { 13 System.out.println("Run"); 14 } 15 //定义内部类 16 static class Inner{ 17 private static int age=10; 18 public void show() { 19 System.out.println("Inner‘s age is:"+age); 20 System.out.println("Outer‘s age is:"+Outer.this.age);//错误,不能访问外部类的非static成员 21 int age = 5; 22 System.out.println("Local variable‘s age is:"+age); 23 24 } 25 } 26 }
new 父类构造器(实参类表)/实现接口 (){ //匿名内部类的类体 }
1 package com.testanonymousclass; 2 public class TestAnonymousClass { 3 4 public void a(A a) { 5 System.out.println("#################"); 6 a.aa(); 7 } 8 9 10 public static void main(String args[]) { 11 TestAnonymousClass t = new TestAnonymousClass(); 12 t.a(new A() {//有个没名的类实现了A接口它的类体中实现了aa方法,并且这个没名的类通过new了个对象传给了TestAnonymousClass的a方法 13 public void aa() { 14 System.out.println("I‘m the anonymousclass‘s function."); 15 } 16 }); 17 } 18 } 19 interface A{ 20 public void aa(); 21 }
1 public class Test2{ 2 public void show(){ 3 class Inner{ 4 public void fun(){ 5 System.out.println("HelloWorld"); 6 } 7 } 8 new Inner().fun(); 9 } 10 public static void main(String args[]){ 11 new Test2().show(); 12 } 13 }
原文:https://www.cnblogs.com/Kundalini/p/11707928.html