欢迎来到天天文库
浏览记录
ID:30777946
大小:90.54 KB
页数:10页
时间:2019-01-03
《java提高篇之详解内部类-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、java提高篇Z详解内部类-编程开发技术java提高篇之详解内部类丿京文出处:chenssy可以将一个类的定义放在另一个类的定义内部,这就是内部类。内部类是一•个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。publicclassOuterClass{privateStringname;privateintage;publicStringgetName(){returnname;p
2、ublicvoidsetName(Stringname){this,name=name;}publicintgetAgeO{returnage;}publicvoidsetAge(intage){this,age=age;classInnerClass{publicInnerClass(){name=〃chenssy〃;age=23;在这里InnerClass就是内部类,对于初学者来说内部类实在是使用的不多,鄙人菜鸟一个同样没有怎么使用过(貌似仅仅只在做swing注册事件中使用过),但是随着编程能力的提高
3、,我们会领焙到它的魅力所在,它可以使用能够更加优雅的设计我们的程序结构。在使用内部类之间我们需要明白为什么要使用内部类,内部类能够为我们带來什么样的好处。一.为什么要使用内部类为什么要使用内部类?在《Thinkinjava》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。在我们程序设计中有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类捉供的、可以继承多个具体的或者抽彖的类的能力来
4、解决这些程序设计问题。可以这样说,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。publicinterfaceFather{publicinterfaceMother{publicclassSonimplementsFather,Mother{ipublicclassDaughterimplementsFather{classMother_implemenlsMother{其实对于这个实例我们确实是看不出来使用内部类存在何种优点,但是如果Father>Mother不是接口,而是抽象类
5、或者具体类呢?这个时■候我们就只能使用内部类才能实现多重继承了。其实使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,但是如果我们不需要解决多重继承问题,那么我们自然可以使用英他的编码方式,但是使用内部类还能够为我们带来如下特性(摘自《Thinkinjava》):?1、内部类可以用多个实例,每个实例都冇自己的状态信息,并冃与其他外围对彖的信息相互独立。2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。3、创建内部类对象的时刻并不依赖丁•外围类对象的创建。4、内部类
6、并没冇令人迷惑的“is-a”关系,他就是一个独立的实体。5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。二、内部类基础在这个部分主要介绍内部类如何使用外部类的属性和方法,以及使用.this与・new。当我们在创建一个内部类的时候,它无形屮就与外围类有了一种联系,依赖于这种联系,它可以无限制地访问外围类的元素。publicclassOuterClass{privateStringname;privateintage;/**省略getter和setter方法**/publicclassTnnerC
7、lass{publicInncrC13ss(){name=chenssy;age=23;}publicvoiddisplay(){System,out.println(z,name:〃+getName()+〃;age:〃+getAge());}}publicstaticvoidmain(String[]args){OuterClassouterClass=newOuterClass();OuterClass.InnerClassinnerClass二outerClass.newInnerClass();i
8、nnerClass.display();Output:name:chenssy;age:23在这个应用程序中,我们口J以看到内部了InnerClassnJ*以对外围类OuterClass的屈性进行无缝的访问,尽管它是private修饰的。这是因为当我们在创建某个外围类的内部类对象时,此时内部类对象必定会捕获一个指向那个外围类对象的引用,只要我们在访问外围类的成员时,就会用这个引用來选择外围类的成员。其实在这个应用程序屮我们还看
此文档下载收益归作者所有