1、 成员内部类的修饰符:
private 为了保证数据的安全性
static 为了方便访问数据
注意:静态内部类访问的外部类数据必须用静态修饰。
案例:我有一个人(人有身体,身体内有心脏。)
1 class Body { 2 private class Heart { //加private 不让直接访问 3 public void operator() { 4 System.out.println("心脏搭桥"); 5 } 6 } 7 8 public void method() { 9 if(如果你是外科医生) { //进行校验 10 Heart h = new Heart(); 11 h.operator(); 12 } 13 } 14 } 15 16 按照我们刚才的讲解,来使用一下 17 Body.Heart bh = new Body().new Heart(); 18 bh.operator(); 19 //加了private后,就不能被访问了,那么,怎么玩呢? 20 Body b = new Body(); 21 b.method();
成员内部类被静态修饰后的访问方式是:
格式1:外部类名.内部类名 对象名 = new 外部类名.内部类名();
格式2: 外部类名.内部类名.所要调用的静态方法名();
如:Outer.Inner.show2();
1 class Outer { 2 private int num = 10; 3 private static int num2 = 100; 4 5 //内部类用静态修饰, 6 -------是因为内部类可以看成是外部类的成员 7 public static class Inner { 8 public void show() { 9 //System.out.println(num); 10 System.out.println(num2); 11 } 12 13 public static void show2() { 14 //System.out.println(num); 15 System.out.println(num2); 16 } 17 } 18 } 19 20 class InnerClassDemo4 { 21 public static void main(String[] args) { 22 //使用内部类 23 // 限定的新静态类 24 //Outer.Inner oi = new Outer().new Inner(); 25 //oi.show(); 26 //oi.show2(); 27 28 //成员内部类被静态修饰后的访问方式是: 29 //格式:外部类名.内部类名 对象名 = new 外部类名.内部类名(); 30 Outer.Inner oi = new Outer.Inner(); 31 oi.show(); 32 oi.show2(); 33 34 //show2()的另一种调用方式 35 Outer.Inner.show2(); 36 } 37 }