下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java语言基础:内部类内部类,计算机面向对象程序设计概念。 向对象程序设计中, 可以在一个类的内部定义另 个类,这种类称为嵌套类(nested classes),它有两种类型,即静态嵌套类和非静态嵌套类。内部类,计算机面向对象程序设计概念。向对象程序设计中,可以在一个类的内部定义另一个类,这种类称为嵌套类(n ested classes),它有两种类型,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实 例变量处于同一级,或处于方法之内,甚至是一个表达式的
2、一部分。1. 普通内部类普通内部类的一个最简单的例子:1./外部类2.class OutterClass 3./内部类4.publicclass InnerClass 5.privateint i =0;6.publicint getlnt()7.return i;8.9.10.publicvoid proc()11.InnerClass inClass =new InnerClass();12.System.out.println(inClass.getlnt();6.publicclass Main 17.publicstaticvoid main(String arg
3、s) 18.OutterClass outClass =new OutterClass();19.outCc();20.21.外部类可以访问内部类的私有成员,内部类也可以访问外部类的私有成员:22./ 外部类23.class OutterClass 24.privateint mOut =10;25./内部类26.publicclass InnerClass 27.privateint mln =0;28.publicvoid printOutPrivate()29./直接打印外部类的成员30.System.out.println(mOut);31.32.33.publicvo
4、id printlnPrivate()34.InnerClass inClass =new InnerClass();35./ 直接打印内部类的私有成员36.System.out.println(inClass.mIn);37.38.publicvoid printOutPrivate()39.InnerClass inClass =new InnerClass();40.inClass.printOutPrivate();4.publicclass Main 45.publicstaticvoid main(String args) 46.OutterClass outC
5、lass =new OutterClass();47.outClass.printlnPrivate();48.outClass.printOutPrivate();49.50.如果外部类的成员变量与内部类的成员变量名字相同,当内部类要访问外部类的该成员时,可以使用"OutClass.this.mem ”来区分:51./ 外部类52.class OutterClass 53.privateintmMem =10;54./内部类55.publicclassInnerClass 56.privateint mMem =0;57.publicvoid printOutPrivate()58
6、./直接打印外部类的成员59.System.out.println(OutterClass.this.mMem);60.61.62.要创建普通内部类,必须先创建相应的外部类:63./ 外部类64.class OutterClass 65.privateint mMem =10;66./内部类67.publicclass InnerClass 68.privateint mMem =0;69.publicvoid printOutPrivate()70./直接打印外部类的成员71.System.out.println(OutterClass.this.mMem);5.76.p
7、ublicclass Main 77.publicstaticvoid main(String args) 78.OutterClass outClass =new OutterClass();79.OutterClass.InnerClass inClass = outClass.new InnerClass();80.inClass.printOutPrivate();81.82.也可以用下面的方式:83./ 外部类84.class OutterClass 85.privateint mMem =10;86./内部类87.publicclass InnerClass 88.privatei
8、nt mMem =0;89.publicvoid printOutPrivate()90./直接打印外部类的成员91. System.out.println(OutterClass.this .mMem);92. 93. 94. public InnerClass newlnnerClass() 95. return new InnerClass();96. 97. 98.98. publicclass Main 99. public static void main(String args) 100. OutterClass outClass =new OutterClass();101.
9、OutterClass.InnerClass inClass = outClass.newInnerClass();102. inClass.printOutPrivate();103. 104. 2. 静态内部类普通内部类前面加上 static 修饰符,就成为静态内部类,静态内部类类似于C+勺嵌套类,与普通内部类相比有如下区别:静态内部类没有指向外部类的引用,外部类对于它来说更像一个名字空间。;而静态内部类可以有这普通内部类不能有静态成员,静态方法,或另一个静态内部类 一切。静态内部类可以直接创建,不必先创建外部类:106./ 外部类107.class OutterClass 108.pri
10、vateint mMem =0;109./静态内部类110.staticpublicclass InnerClass 111.privateint mMem =0;112.publicvoid printOutPrivate()113./这是错误的114./ System.out.println(OutterClass.this.mMem)115.116.117.publicvoid printInPrivate() 9 / 7118.InnerClass inClass =new lnnerClass();119./可以直接访问静态内部类的成员120.System.out.println(i
11、nClass.mMem);121.122.123.public classMain 124.publicstatic void main(String args) 125./直接创建静态内部类126.OutterClass.InnerClass inClass =new OutterClass.lnnerClass(127.128.129.);inClass.printOutPrivate();从上面描述可以看出, 静态内部类与一般类没有太大区别,只不过它是放在一个类的里面,这个类相当于它的名字空间,可以防止命名冲突。3.局部内部类Java可以把一个类定义在一个方法里面,甚至是块里面,它的作用
12、域就在这个块里面:130./ 外部类131.class OutterClass 132.publicvoid testLocalInner() 133.if(true )134.135.class LocalInner 136.public void proc() 137.System.out.println("hello" );138.139.140./ 可以创建使用141.LocalInner localInner =new Locallnner();142.localIc();143.144./错误:超岀类定义的作用域145.LocalInner lo
13、calInner =newLocalInner();146.localIc();147.148.局部内部类的一般用途是实现某个接口,并作为这个接口传出方法被使用:149./接口150.interfaceTalker 151.publicvoid Talk();152.153.154./外部类155.class OutterClass 156.public Talker getTalker() 157./ 现实该接口的局部内部类158.class SomeTalkerimplements Talker 159.publicvoid Talk() 160.System.out.pr
14、intln("hello" );161.162.163./创建类实例并作为Talker 返回164.SomeTalker talker =new SomeTalker();165.return talker;69.publicclass Main 170.publicstaticvoid main(String args) 171.OutterClass outclass =new OutterClass();172.Talker talker = outClass.getTalker();173.talker.Talk();174.175.4.匿
15、名内部类匿名内部类的语法如下:176. new lnterfaceName();或 new SuperclassName();它被认为是InterfaceName的实现者,或是 SuperclassName的继承类,匿名内部类没 有构建函数,如果 SuperclassName有带参数的构造函数,必须在创建匿名内部类时带上这 些参数,下面是匿名内部类最常见的使用场合:/ 接口interface Talker public void Talk();/夕卜部类class OutterClass public void Talk (T alker talker) talker.Talk();public class Main publicstaticvoidmain(Str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业版股权质押权责明确协议样本一
- 科技驱动未来
- 元宵节数字营销解读
- 2025年度拆除工程噪音污染控制合同4篇
- 2025年度厂房设备租赁与绿色制造合同范本4篇
- 《中科院化学课件:不对称催化反应及其在药物合成中的应用》
- 二零二五年度腻子材料批发与零售合同3篇
- 2025年度厂区装卸工劳动保障政策宣传合同4篇
- 2025年度绿色环保型老旧厂房拆除及重建一体化工程合同4篇
- 2025年度高端医疗器械研发与生产合同4篇
- 《煤矿地质工作细则》矿安﹝2024﹞192号
- 平面向量及其应用试题及答案
- 2024高考复习必背英语词汇3500单词
- 消防控制室值班服务人员培训方案
- 《贵州旅游介绍》课件2
- 2024年中职单招(护理)专业综合知识考试题库(含答案)
- 无人机应用平台实施方案
- 挪用公款还款协议书范本
- 事业单位工作人员年度考核登记表(医生个人总结)
- 盾构隧道施工数字化与智能化系统集成
- 【企业盈利能力探析文献综述2400字】
评论
0/150
提交评论