首页 > 代码库 > java9-6 内部类

java9-6 内部类

1、 内部类概述:
    把类定义在其他类的内部,这个类就被称为内部类。
    举例:在类A中定义了一个类B,类B就是内部类。

内部的访问特点:
    A:内部类可以直接访问外部类的成员,包括私有。
    B:外部类要访问内部类的成员,必须创建对象。

class Outer {private int num = 10;class Inner {public void show() {System.out.println(num);}}public void method() {//找不到符号//show();Inner i = new Inner();i.show();}}class InnerClassDemo {public static void main(String[] args) {}}

 

2、 内部类位置
    成员位置:在成员位置定义的类,被称为成员内部类。
    局部位置:在局部位置定义的类,被称为局部内部类。


    成员位置:在成员位置定义的类,被称为成员内部类。

 1 class Outer { 2 private int num = 10; 3  4 //成员位置 类里方法外? 5 /* 6 class Inner { 7  8 } 9 */10 public void method() {11 //局部位置 类里方法内?12 class Inner {13 14 }15 }16 }17 18 class InnerClassDemo2 {19 public static void main(String[] args) {20 21 }22 }

 

3、 成员内部类:
      如何直接访问内部类的成员。
      外部类名.内部类名 对象名 = 外部类对象.内部类对象;

 1 class Outer { 2 private int num = 10; 3  4 class Inner { 5 public void show() { 6 System.out.println(num); 7 } 8 } 9 }10 11 class InnerClassDemo3 {12 public static void main(String[] args) {13 //需求:我要访问Inner类的show()方法14 //Inner i = new Inner();15 //i.show();16 17 //格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;18 Outer.Inner oi = new Outer().new Inner();19 oi.show();20 }21 }

 

面试题:
    要求请填空分别输出30,20,10。

 1 class Outer { 2   public int num = 10; 3 class Inner { 4   public int num = 20; 5   public void show() { 6     int num = 30; 7       System.out.println(XX); 8       System.out.println(XX); 9       System.out.println(XX);10     }11     }12 }

 

 

 1 答案: 2 class Outer { 3   public int num = 10; 4 class Inner { 5   public int num = 20; 6   public void show() { 7   int num = 30; 8       System.out.println(num); 9       System.out.println(this.num);10       //System.out.println(new Outer().num);11       System.out.println(Outer.this.num); //限定了this.num的范围12 }13 }14 }15 class InnerClassTest {16     public static void main(String[] args) {17         Outer.Inner oi = new Outer().new Inner();18            oi.show();19     }    20 }

 

java9-6 内部类