黑马程序员_1_内部类访问规则(1)

来源:互联网 发布:php 编译 加密 编辑:程序博客网 时间:2024/05/29 14:12

--------------------------------android培训java培训期待与您交流! ---------------------------------------


内部类访问规则

内部类定义:

当一个类需要直接访问一个类时,可定义为内部类。

定义了内部类后,他的访问规则也有了小变化,一下举例说明。

*

*

定义一个A类为外部类,再定义一个非静态B类为A类中的内部类,B类中有个非静态show()函数。

非静态的外部类A     非静态的内部类B        内部类BShow()函数


这时可以分三种情况去访问show()函数:

1、main()函数访问Show()

分析:B类是A类中的非静态类,要访问B类中的非静态函数,首先要建立B的对象才能访问。

2、在B类中访问show()

分析:Show()函数是属于B类的成员,所以可以直接访问。

3、在A类中访问show():

分析:Show()函数是属于B类的成员,要访问show()函数,也需要建立对象才能访问,  

    由于B类在A类内,所以可以直接创建B类对象,然后调用Show()函数。

以上就是外部类、内部类与内部函数都为非静态的时候。

*

*

用图来显示

                         非静态的外部类A     静态的内部类B        内部类B中非静态Show()函数

                        Class A

                        {

                                Static Class B

                                {

                                     Void Show()

                                     {

                                          System.out.println(“我是B类的show函数”);

                                      }

                                 }

                         }

1main()函数访问Show().

分析:B类是A类的成员,成员变成了静态,所以可以直接访问到。

但是Show()函数在B类中非静态,要访问到还需建立其对象才能访问。

2、B类访问Show().

分析:Show()在静态B类中,B类想访问,只要函数名就可以直接访问。

所以在B类中可以直接Show()或者this.show();访问

3、A类访问Show()

分析:BA中,B属于A的静态成员,所以A可以直接用B

但是B里面的函数确实非静态的,想要调用还需创建B类对象。


这些是当内部类为静态的情况。

 -----------------------------------------------------------------------------------------------------------------------

如果内部类与内部类的函数都是静态呢?

非静态的外部类A     静态的内部类B        内部类B中静态Show()函数

                  Class A

                  {

                          Static Class B

                          {

                                  Static Void Show()

                                  {

                                          System.out.println(“我是B类的show函数”);

                                  }

                         }

                  }

1、在mian()里访问Show().

分析:静态BA对象的成员,所以可以直接访问;静态Show()属于B()对象的成员,所以也可以直接访问。

Class MainTest

{

         Public static void main(String[] args)

         {

                  A.B.Show();//外部类类名。内部类类名。函数名  就可以直接访问。

         }

}



3、A类中访问Show();

分析:本类中访问本类成员只需成员名可以直接访问。而且又是静态的成员,所以不用建立对象。

Class A

{

         Void Temp()

         {

                 B.Show();

         }

         Static Class B

         {

                  Static Void Show()

                  {

                          System.out.println(“我是B类的show函数”);

                   }

          }

}



----------------------------------android培训java培训期待与您交流! --------------------------------------


0 0