付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年新疆下半年的事业编考试及答案
- 2025年六盘水特岗面试题库及答案
- 2025年事业编重庆9月份考试及答案
- 2025年水城区教师笔试及答案
- 2025年广安三不限事业编考试及答案
- 河北省石家庄市七县2024-2025学年高二下学期4月期中提升考英语试卷(含解析无听力音频有听力原文)
- 2025年长江工程职业技术学院单招职业技能测试题库带答案解析
- 2025年江西财经职业学院马克思主义基本原理概论期末考试模拟题附答案解析
- 2024年邹平县招教考试备考题库附答案解析(必刷)
- 2024年阜阳理工学院马克思主义基本原理概论期末考试题及答案解析(夺冠)
- 2026年金融科技支付创新报告及全球市场应用分析报告
- 尼帕病毒病防治实战
- 2026春译林版八下英语单词默写【中译英】
- 2025至2030心理咨询行业市场发展分析与发展前景及有效策略与实施路径评估报告
- 2025年农业现代化机械化服务项目可行性研究报告
- 初中英语单词表2182个(带音标)
- 老年慢性病管理新进展
- 医患沟通学课件
- 钢结构施工方案模板及范例
- 胶带机保洁管理办法
- 2025年国防科工局面试模拟题库解析
评论
0/150
提交评论