java中内部类与外部类的学习资料

java中内部类与外部类的学习资料

ID:22684380

大小:79.00 KB

页数:9页

时间:2018-10-30

java中内部类与外部类的学习资料_第1页
java中内部类与外部类的学习资料_第2页
java中内部类与外部类的学习资料_第3页
java中内部类与外部类的学习资料_第4页
java中内部类与外部类的学习资料_第5页
资源描述:

《java中内部类与外部类的学习资料》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、内部类的位置:内部类可以作用在方法里以及外部类里,作用在方法里称为局部内部类,作用在外部类里分为实例内部类和静态内部类。外部类和内部类的类访问修饰符:外部类可以是public和默认的,内部类可以是public,private,protected类型的内部类和外部类的关系:*在【实例内部类中】A:内部类可以访问外部类中所有的任何访问修饰符的成员。B:而一个外部类实例对应0个或n个内部类实例。在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问才可以*在【静态内部类中】A:静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,就必须

2、通过外部类的实例去访问。在创建内部类的实例的时候,不必创建外部类的实例.。B:外部类可以通过完整的类名来直接访问静态内部类的静态成员,如果要访问静态内部类的非静态成员则需要创建静态内部类的一个实例才行packagecom.ming;publicclassStaticInnerTest{publicstaticclassA{publicinta=10;staticintb=100;}publicstaticvoidmain(String[]args){StaticInnerTest.Amya=newStaticInnerTest.A();mya.a=1

3、234;System.out.println(""+mya.a);}}以上是可以运行成功的,已经经过测试*在【局部内部类中】A:局部内部类和实例内部类一样,可以访问外部类的所有成员B:外部类根本不知道局部内部类的存在,所以访问不了。内部类的分类:1,成员内部类(实例内部类,静态内部类)

4、2.局部内部类(一)成员内部类(没有在方法中定义的内部类)*(1)实例内部类:(1)在创建实例内部类的实例的时候,外部类的实例必须已经存在Outer.InnerToolsits=newOut().newInnerTools();以上代码等价于:Outerout=new

5、Outer();Outer.InnerToolsits=out.newInnerTools();(2)实例内部类的实例【自动】持有对外部类的实例的引用,所以在实例内部类中可以直接访问外部类的[所有]成员(这里指的是外部类当中所有的public,protected,private,static的方法和成员变量)之所以能访问,是因为在实例内部类中需要现有外部类的实例,才能有内部类的实例,参见(1).Outer.InnerToolsits=newOuter().newInnerTools();【注意:】在多重嵌套中,实例内部类可以访问所有外部类的成员Cla

6、ssA{PrivatevoidmethodA(){}ClassB{PrivatevoidmethodB(){}ClassC{PrivatevoidMethodC(){methodA();methodB();}}}}(3)在实例内部类中,外部类的实例与内部类的实例是一对多的关系,一个内部类实例只会引用一个外部类实例,而一个外部类实例对应0个或n个内部类实例,在外部类中【不能】直接访问内部类的成员,必须通过内部类的实例去访问才可以。(4)在实例内部类中不能定义静态成员*(2)静态内部类(1)静态内部类的实例【不会自动持有】外部类的实例的引用,在创建内部类

7、的实例时,不必创建外部类的实例ClassA{PublicstaticclassB{Intv;}}ClassTest{Publicvoidtest(){A.Bb=newA.B();b.v=1;}}(2)静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,就必须通过外部类的实例去访问classA{privateinta1;privatestaticinta2;publicstaticclassB{intb1=a1;intb2=a2;intb3=newA().a1;};}(1)在静态内部类中可以定义静态成员和实例成员classA{public

8、staticclassB{intv1;staticintv2;publicstaticclassC{staticintv3;};};};(2)测试类可以通过完整的类名来直接访问静态内部类的静态成员classA{publicstaticclassB{intv1;staticintv2;publicstaticclassC{staticintv3;intv4;};};};publicclassClient{publicvoidtest(){A.Bb=newA.B();A.B.Cc=newA.B.C();b.v1=1;b.v2=1;A.B.v1=1//er

9、rorA.B.v2=1;A.B.C.v3=1;}};(二)局部内部类(在一个方法中定义的内部类)局部内部类是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。