欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

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

  • 资源ID:50552936       资源大小:98.50KB        全文页数:9页
  • 资源格式: DOC        下载积分:19积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要19积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

内部类的位置:内部类可以作用在方法里以及外部类里,作用在方法里称为局部内部类,作用在外部类里分为实例内部类和静态内部类。外部类和内部类的类访问修饰符:外部类可以是 public和默认的,内部类可以是 public,private,protected类型的内部类和外部类的关系:*在【实例内部类中】A :内部类可以访问外部类中所有的任何访问修饰符的成员。B:而一个外部类实例对应0个或n个内部类实例。在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问才可以*在【静态内部类中】A :静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,就 必须通过外部类的实例去访问。在创建内部类的实例的时候,不必创建外部类的实例.<B :外部类可以通过完整的类名来直接访问静态内部类的静态成员,如果要访问 静态内部类的非静态成员则需要创建静态内部类的一个实例才行package com .ming;public classStaticI nn erTest public static class A publicinta = 10;staticintb = 100;public staticvoid main( Stri ng args) Static Inn erTest.A mya =mya. a = 1234;System. out .println(new Static Inn erTest.A();+ mya. a);以上是可以运行成功的,已经经过测试*在【局部内部类中】A :局部内部类和实例内部类一样,可以访问外部类的所有成员 B :外部类根本不知道局部内部类的存在,所以访问不了。内部类的分类:1,成员内部类(实例内部类,静态内部类)2.局部内部类(一) 成员内部类(没有在方法中定义的内部类)* (1)实例内部类:(1) 在创建实例内部类的实例的时候,外部类的实例必须已经存在Outernn erTools its = new Out(). new Inn erTools();以上代码等价于:Outer out = new Outer();Outernn erTools its = out .new Inn erTools();(2) 实例内部类的实例【自动】持有对外部类的实例的引用,所以在实例内部类中可以直接访问外部类的所有成员(这里指的是外部类当中所有的public,protected,private,static 的方法和成员变量)之所以能访问,是因为在实例内部类中需要现有外部类的实例,才能有内部类的实例渗见(1).Outernn erTools its = new Outer(). newl nn erTools();【注意:】在多重嵌套中,实例内部类可以访问所有外部类的成员Class APrivate void methodA()Class BPrivate void methodB()Class CPrivate void MethodC() methodA(); methodB();(3) 在实例内部类中,外部类的实例与内部类的实例是一对多的关系,一个内部类实例只会引用一个外部类实例,而一个外部类实例对应0个或n个内部类实例,在外部类中【不能】直接访问内部类的成员,必须通过内部类的实例去访问才可以。(4) 在实例内部类中不能定义静态成员* (2)静态内部类(1) 静态内部类的实例 【不会自动持有】 外部类的实例的引用,在创建内部类的实例时,不必创建外部类的实例Class APublic static class B In tv;Class TestPublic void test()A.B b = new A.B(); b.v = 1;(2) 静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,就必须通过 外部类的实例去访问class Aprivate int a1;private static int a2; public static class Bint b1 = a1;int b2 = a2;int b3 = new A().a1;(3) 在静态内部类中可以定义静态成员和实例成员 class Apublic static class Bin t v1;static int v2;public static class C static int v3;; 测试类可以通过完整的类名来直接访问静态内部类的静态成员class Apublic static class Bin t v1;static int v2;public static class Cstatic int v3;int v4;public class Clie ntpublic void test()A.B b = new A.B(); ABC c = new A.B.C(); b.v1 = 1;b.v2 = 1;A.B.v1 = 1/errorA.B.v2 = 1;A.B.C.v3 = 1;(二) 局部内部类(在一个方法中定义的内部类)局部内部类是在一个方法当中定义的内部类,它的可见范围是当前方法。和局部变量一样,局部内部类不能使用访问修饰符(public , private , protected)以及static来修饰,局部内部类的特点是: 局部内部类只能在当前方法中使用class AB b = new B();/errorpublic void method() class Bin t v1;in t v2;class Cin t v3;B b = new B();B.C c = b.new C();(2)局部内部类和实例内部类一样,不能包含静态成员。class Apublic void method()class Bstatic int v1;/error in t v2;static class C /errorint v3;;(3)在局部内部类中定义的内部类同样也不能被public protected, private这些访问修饰符修饰(局部内部类不能被public protected private访问修饰符修饰)(4)局部内部类和实例内部类一样,可以访问外部类的所有成员,此外,局部内部类还可以访问所在方法中的 final类型的参数和变量class Aint a;public void method® nal int p1,i nt p2)int localV1 =1;final int localV2 = 2;class Bint b1 =a;int b2 =p1;int b3 =p2;/errorint b4 =localV1/errorint b5 =localV2;(三) 匿名内部类匿名类是一种特殊的内部类,这种内部类没有自己的名字(1) 匿名内部类本身没有构造器,但是会调用父类中的构造器。package com .ming;public class A "不是默认构造器”);"默认构造器”);"from A");A(i nt y)System. out .println( A()System. out .println( void method()System. out .println( public static void main( Stri ng args) /new A().method();默认构造器,from AA a = new A()void method()System. out .println(”我是匿名内部类中的method方法”);/*也就是说匿名构造器会自动调用父类中的构造器*/a.method(); /默认构造器,我是匿名内部类中的method方法(2) 匿名内部类尽管没有构造方法,但是可以在匿名内部类中提供一段实例初始化代码, Java虚拟机会在调用了父类的构造方法之后,执行这段代码。public static void main( Stri ng args)int v = 1;A a = new A(v)System.out.pri ntln ("i nit in sta nee");void method() System.out.pri ntln ("from anonym ous");;a.method();程序执行结果如下:ano ther con strueter/父类当中的构造器执行的结果init in sta neefrom anonym ous(3) 除了可以在外部类的方法内定义匿名类外,还可以在声明一个成员变量时定义匿名内 部类。abstract class AA a = new A()void method()System.out.pri ntln ("i nn er"); ;abstract void method(); 匿名内部类除了可以继承类外,还可以实现接口【重点】Ccass Samplepublic static void main( Stri ng args)Thread t = new Thread( new Runn able() public void run()for(int i = 0; i < 100; i+) System.out.pri nt(i);); 匿名内部类同局部内部类一样,可以访问外部类的所有成员,如果匿名内部类位于一个 方法中,还能访问所在方法的final类型的变量和参数 (6)局部内部类和匿名内部类一样,名字在方法外都是不可见的,因此都可以起到封装类型 名字的作用。【匿名内部类和局部内部类的区别】1,匿名内部类的程序代码量少2,一个局部内部类可以有多个重载构造方法,并且测试类可以多次创建局部内部类的实例。而匿名内部类没有重载构造方法之说,并且只能创建一次实例。因此,如果只需要创建内部类的一个实例,可以使用匿名内部类, 它能使程序代码简洁明了,如果需要多次创建内部类的实例,那么使用局部内部类。内部类小结:作者:小明参考资料:<<Core Java>>

注意事项

本文(java中内部类与外部类的学习资料)为本站会员(小**)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!