<强> java内部类的实例详解强>
可以将一个类的定义放在另一个类的定义内部,这就是内部类。
内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。
<强>第一次见面强>
内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。
公开课OuterClass { 私人字符串名称; 私人int年龄; 公共字符串getName () { 返回名称; } 公共空间setName(字符串名称){ this.name=名称; } 公共int getAge () { 返回年龄; } 公共空间setAge (int年龄){ 这一点。年龄=年龄; } 类InnerClass { 公共InnerClass () { name=" chenssy”; 年龄=23; } } } >之前在这里InnerClass就是内部类,对于初学者来说内部类实在是使用的不多,鄙人菜鸟一个同样没有怎么使用过(貌似仅仅只在做摇摆注册事件中使用过),但是随着编程能力的提高,我们会领悟到它的魅力所在,它可以使用能够更加优雅的设计我们的程序结构。在使用内部类之间我们需要明白为什么要使用内部类,内部类能够为我们带来什么样的好处。
<强>一,为什么要使用内部类强>
为什么要使用内部类?在《认为在java》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。
在我们程序设计中有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类提供的,可以继承多个具体的或者抽象的类的能力来解决这些程序设计问题。可以这样说,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。
公共接口的父亲{ } 公共接口母亲{ } 公共类的儿子实现父亲、母亲{ } 公共类的女儿实现父亲{ 类Mother_实现母亲{ } } >之前其实对于这个实例我们确实是看不出来使用内部类存在何种优点,但是如果父亲,母亲不是接口,而是抽象类或者具体类呢?这个时候我们就只能使用内部类才能实现多重继承了。
其实使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,但是如果我们不需要解决多重继承问题,那么我们自然可以使用其他的编码方式,但是使用内部类还能够为我们带来如下特性(摘自《认为在java》):
,1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
,2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
,3、创建内部类对象的时刻并不依赖于外围类对象的创建。
,4,内部类并没有令人迷惑的”是一个“关系,他就是一个独立的实体。
,5,内部类提供了更好的封装,除了该外围类,其他类都不能访问。
<强>二,内部类基础强>
在这个部分主要介绍内部类如何使用外部类的属性和方法,以及使用。这与新的。
当我们在创建一个内部类的时候,它无形中就与外围类有了一种联系,依赖于这种联系,它可以无限制地访问外围类的元素。
公开课OuterClass { 私人字符串名称; 私人int年龄;/* *省略getter和setter方法* */公开课InnerClass { 公共InnerClass () { name=" chenssy”; 年龄=23; } 公共空间显示(){ 系统。println (getName()”的名字:“+ +”;年龄:”+ getAge ()); } } 公共静态void main (String [] args) { OuterClass OuterClass=new OuterClass (); OuterClass。InnerClass InnerClass=outerClass。新InnerClass (); innerClass.display (); } } -------------- 输出: 名称:chenssy;年龄:23 >之前在这个应用程序中,我们可以看到内部了InnerClass可以对外围类OuterClass的属性进行无缝的访问,尽管它是私人修饰的。这是因为当我们在创建某个外围类的内部类对象时,此时内部类对象必定会捕获一个指向那个外围类对象的引用,只要我们在访问外围类的成员时,就会用这个引用来选择外围类的成员。
java内部类的实例详解