首页 > 代码库 > java内部类

java内部类

什么是内部类?内部类就是类中类,类里面还有类,这就是叫做内部类。内部类可以在类里面声明类也可以声明接口。如图8.10所示:

技术分享

  图8.10

  为什么要用到内部类呢?内部类从代码的角度来讲,内部类只是简化了代码的操作,但是他没有什么太大的特点,如果急需一个类,不让别人用,那么这个类就可以什么在内部。内部类在面向对象思想没有太大的用处只不过是为了快捷,这就是内部类的用处。

  内部类很多人都是为了简单才声明内部类,Java的规则是一个文件里面只放一个类就行了,但是非得在文件里面写多个类那么就不要违反他的规则他的规定是一个文件只允许有一个带public的类,而且只要带了public那么文件名字就必须和类一致。

  内部类他和类一样也可以new对象可以调用方法,但是有一个规则内部类分为2种:静态的内部类和实例的内部类。

  如果加上了static那么这个类就是静态的内部类。如果没有加static的那么就为实例的内部类。可以把内部类看作为属性,属性有静态和实例成员 如果是静态的那么他里面的静态方法都可以用静态的类来访问。如果是实例的那么只能用对象去访问。如图8.101所示:

技术分享

  图8.101

  如果静态的内部类,他里面有私有的一个方法但是外部的类可以访问他里面的私有方法,因为内部类是属于腹中的类,腹中的类的任何成员都是可以互相访问的。

  就比如孕妇里面怀了一个孩子,他所有的营养都是母亲来提供的。所以呢他是完全可以对内部类的私有成员访问的。如图8.102所示:

技术分享

  图8.102

  如果外部的静态方法去访问实例的内部类这是不允许的,因为他是实例的,实例的必须是实例的才可以调用。实例内部类不允许申请静态的方法和静态的属性,而静态的内部类可以申请实例的方法和实例的属性。

  内部类的访问方式:

  外类的静态方法不能对实例内部类产生任何访问,只能new对象访问。 外类的实例方法可以对静态和实例的内部类产生访问。 外类可以访问内部类的私有成员。

  静态的内部类在外面构建方式:new 外部类.内部类();

  实例的内部类在外面的构造方式:new 外部类().new 内部类();

  无名内部类:

  内部类还有无名内部类,书上或者程序员在android里面都是用无名内部类多。那么什么叫做无名的内部类呢?就是没有名字的内部类,这就叫做无名的内部类。

  那么无名内部类到底有什么用处呢?比如有一个子类继承了父类重写了父类的方法,但是他里面就只有一个方法,那么写一个子类去继承这个类来重写他的这个方法觉得太麻烦了没有必要,写内部类去继承他也是觉得有点麻烦了,那么我们就可以写一个无名的内部类去重写这个方法。

技术分享:www.kaige123.com

java内部类