16.内部类的基本概念汇总_第1页
16.内部类的基本概念汇总_第2页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3 31 1、课程名称:内部类的基本概念2 2、知识点2.12.1、上次课程的主要知识点代码块的定义2.22.2、本次预计讲解的知识点1 1、内部类的基本定义语法;2 2、使用 staticstatic 定义内部类;3 3、在方法中定义内部类;讲师4ECTRestATI ONOMPUTLCONTENTRUNTIME从实际开发来看,真正写到内部类的时候是在很久以后了,短期内如果是自己 编写代码,几乎是见不到内部类出现的。讲解它的目的是第一个为了解释概念,另 外一个就是也是为后期一些复杂的程序做铺垫。3.13.1、内部类的基本概念类的组成永远都只有两点:成员(Field(Field、方法(Meth

2、od,(Method,但是几乎所有的程序里 面都不会对嵌套的结构有任何的限定,所以内部类指的是在一个类的内部可以继续 嵌套其它他类结构的一种形式代码,并且从理论上来讲可以一直嵌套下去。下面首先来看一下内部类的基本形式。范例:观察内部类代码Outer/妙部类private String HeHo WorldT;InnerW内部类public void prinUH$yLemrou1.prHitln|in1a)7/ ttt Hlo怦囚窘Ipublic void fun(HInner in =1皿吃心实伙化内部类对誠in.prin( (a调用內BB类的方注Ipublic class leitDemo

3、(public ttttk void mainfStiuip方注(Outer out二new Outer();cutfunO:)J_类本身的核心的组成就应该是属性和方法,但是如果引用了内部类,就相当于 破坏了这样的程序结构。所以内部类所带来最严重的问题就在于程序结构的破坏, 但破坏了那么也应该有一些收益,那么内部类的好处在哪里呢?为了观察出内部内类的好处,那么下面将内部类拿出来,变为两个类。那么清楚了内部类的基本定义之后,实际上现在又会存在有以下几个问题:? ?在编写代码中一直强调:只要是属性的访问一定要加上” thisthis 这个时候由于属性是外部类中的,所以要想操作 thisthis 那

4、么就必须使用”外部类.this.this.属性class Outer/外部类private String info =1lHello World!1;class Inner/内部类public void print()System.out.printlnjOuter.thisdnfo);/ tH info属性内容 public void fun()(Inner in = new Innerf);/实例化内部类对象in,print();/调用内部类的方注? ?以上代码发现内部类可以方便的访问外部内中的私有属性,同时发现外部类 中的funfun(方法里面也占着内部类的对象,那么内部类的私有属性外部

5、类也可以直接 利用对象访问class Outer/外部类private String info =pHello World!:dass Inner/内部类public void prtnt)System.out.prindnfOuter.thrtJnfo):/输出info第性内容 )public void fun()Inner In =HEWI怦n刨|:吴列化内部类对象ln,prlnt();/调用内囲类的方class Outer蚪部类private String info hHello World!:class Innerpublic static void mainString args/s

6、tatic方法 Outer out = new Outer。:outfun();内部类与外部类之间的私有属性都是可以进行直接访问的, 这一点要比分为两 个类更加的方便。现在发现实例化内部类的对象操作都是在外部类中的funfun(方法里完成的。那么果现在不希望通过外部类的方法操作内部类,那么也可以根据以下的语法,直 接在其他类中直接实例化内部类对象。语法结构:public static void main(String args)/static方 法为了解释其语法,我们看一下程序编译后的结果。现在通过程序执行可以发现,在类中存在有一个” Outer$lnnerOuter$lnner 的程序类。这

7、个就属于 InnerInner 类文的件。但是内部类的标准名称应该是外部类. .内部类”,只不过”. .不可能直接出现在文件中所以 javajava 将其进行转换,在文件名称中使用” $ $”来代替public static void main(String args)/static方法 Outer out = new Outer-*lefTip|:砧1血out print! nCFunQ方艺中;EJL的燼Ht蛮矗ulJUIJnrw;: * .内i月耳方汪IHiblK frUDmv(puWk $Stk void nwln(5trh( (ar辭|匚注注意:现在使用的是 JDK1.8JDK1.8

8、版本那么这个版本的好处是避免了一些复杂的细节,之所以会避免是为了整体的设计考虑的,而以上的代码,在 JDK1.7JDK1.7 时就会出现问题。因为在 JDK1.8JDK1.8 以前有一 个约定,如果一个方法中定义了内部类,那么这个内部类要想访问方法的参数,或 者是定义的变量,则参数或变量前必须加上finalfinal。芯占$OuterW外那类prfwte StririK teifa -卜*dlo WflrWP:public wridmi tn叩H方士 辛:了 杏段ddutMe胡gooo a方诙中k时黝筈4 Aw内靈芒r方注中定文publk voM prkit( (HSsiHn.ouLpnnil

9、nCOuter矣中静inlo性*Ou( (w.thitWo.Systrfli.out.prkitinC fur*)J? r.L:!:的掙KSvsffenLoutprintln(%nn方法申罷JI脚临时爱MI -UQ:ntw lnnti(| printfM茯创f匕内邑 M 对硬曲.用方是poblk山沙TfitDmiopublii tlititwHd nuInffDgF.J.(Outeroutner OutcT);/弓拘11 Outer黄对瞰out. ftm( 100k之所以可以不加 finalfinal 了,主要是因为那个 LamdaLamda 与方法引用一起出现所造成 的新局面。4 4、总结1 1、不要去考虑怎么用,一般的开发很少会用到,但是会使用;2 2、内部类先看明白它的语法形式;范例:内部类拿出来如E llirtwpri vJJfar lb Had irilA-UkiAEMMkwiHI * * ntw科伽iiw乂厲代丙IFm *n rrM|)購出需学晨方名与.hif srt*irat.144-id ti 111dlfn imr.V/AK*plivJW OMhT聲址宣僅竝典第更厲餐対萨ChlVH *Viidii tof(OUHriM wnp-)putAt -n4d prin h -1加ttt诉外.畫申葫也11帽.两卑爭覽屿埔閒巒 起自fietier九-S加 r律朗.Ky

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论