欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java面向对象之内部类(访问格式)

程序员文章站 2022-07-05 11:26:43
一、基础概念 1.内部类是定义在类中的类。A类需要直接访问B类中的成员时,可以将A类定义到B类中,作为B类的内部类存在。 2.内部类可以相当于外部类中的一个成员,可以被成员修饰符所修饰。(如:public private static) 3.静态内部类可以相当于一个外部类进行使用。 4.非静态的内部 ......

一、基础概念

  1.内部类是定义在类中的类。A类需要直接访问B类中的成员时,可以将A类定义到B类中,作为B类的内部类存在。

  2.内部类可以相当于外部类中的一个成员,可以被成员修饰符所修饰。(如:public private static)

  3.静态内部类可以相当于一个外部类进行使用。

  4.非静态的内部类只允许定义静态的常量,不能定义其他静态成员。

  5.访问规则:
    内部类可以直接访问外部类中的成员,因为内部类持有了外部类的引用。外部类名.this
    外部类要访问内部类需要创建内部类的对象。

二、实例代码

 1 //外部类Outer
 2 class Outer
 3 {
 4     private static int num = 4;
 5     
 6     //内部类Inner_1
 7     class Inner_1
 8     {
 9         
10         void show1()
11         {
12             System.out.println("内部类Inner_1 ,show1  "+num);//内部类Inner_1可以直接访问外部类Outer中的成员num
13         }
14     }
15     
16     //外部类中的方法Method访问内部类Inner_1中的方法show1
17     public void Method()
18     {
19         Inner_1 in = new Inner_1();
20         in.show1();
21     }
22     
23     //静态内部类Inner_2
24     static class Inner_2
25     {
26         void show2()
27         {
28             System.out.println("内部静态类Inner_2 ,show2  "+num);
29         }
30         static void show3()
31         {
32             System.out.println("内部静态类Inner_2 ,show3  "+num);
33         }
34     }
35     
36     class Inner_4
37     {
38         static final int count = 5;    //内部类中定义静态的常量
39         void show4()
40         {
41             System.out.println("内部类Inner_4 ,show4  "+count);
42         }
43     }
44 }
45 
46 class InnerClassDemo 
47 {
48     public static void main(String[] args) 
49     {
50         //创建外部类对象,访问内部类。
51         Outer out = new Outer();
52         out.Method();
53         
54         //创建非静态的内部类对象,可以通过创建外部类对象,被外部其他程序访问。
55         Outer.Inner_1 i1 = new Outer().new Inner_1();
56         i1.show1();
57         
58         //创建静态内部类对象,并访问非静态成员。
59         Outer.Inner_2 i2 = new Outer.Inner_2();
60         i2.show2();
61         
62         //创建静态内部类对象,并访问静态成员。
63         Outer.Inner_2.show3();
64         Outer.Inner_2 i4 = new Outer.Inner_2();
65         i4.show3();
66         
67         //创建非静态的内部类对象,并访问静态变量。
68         Outer.Inner_4 i5 = new Outer().new Inner_4();
69         i5.show4();
70     }
71 }
三、代码运行

  Java面向对象之内部类(访问格式)