一、常规内部类
1 public class Outer { 2 int count; 3 4 void say(){ 5 count++; 6 System.out.println("我是外部类"); 7 } 8 void walk(){ 9 count++; 10 System.out.println("I am walking....."); 11 } 12 class Inner{ 13 int inner_count; //外部类无法访问到内部类的局部变量 14 void say(){ 15 walk();//内部类可以直接调用外部类方法及变量 16 Outer.this.say();//方法名重复时可以使用此种方法调用 17 count++; 18 System.out.println("我是内部类"+count); 19 } 20 21 } 22 }
实例化内部类
1 public class Demo { 2 public static void main(String[] args) { 3 Inner i=new Outer().new Inner(); 4 i.say(); 5 } 6 }
二、静态内部类
1 public class Outer { 2 static int count; 3 4 void say(){ 5 count++; 6 System.out.println("我是外部类"); 7 } 8 void walk(){ 9 10 System.out.println("I am walking....."); 11 } 12 static class Inner{ //静态内部类无法访问外部类的非静态变量 13 int inner_count; 14 void say(){ 15 System.out.println("我是内部类"+count); 16 } 17 } 18 }
实例化内部类
public class Demo { public static void main(String[] args) { Inner i=new Outer.Inner(); i.say(); } }