现在的位置: 首页 > 综合 > 正文

java中的内部类的使用

2013年10月01日 ⁄ 综合 ⁄ 共 1027字 ⁄ 字号 评论关闭

内部类可分为:实例内部类、静态内部类、局部内部类、匿名内部类。下面逐一介绍他们的使用方法及注意事项。

一、.实例内部类(没有被static修饰的类)

1.创建实例内部类,首先要声明一个外部类实例。

2.内部类可以直接访问外部类的成员变量/方法。

3.外部类与内部类的关系是一对多的关系。

4.实例内部类中只能定义非静态成员,否则会出错

5.当内部类与外部类存在同名成员时,在内部类中,用this.成员,来访问内部类成员。用外部类名.this.成员来访问外部类的成员。

二、静态内部类(用static修饰的)

1.静态内部类实例的创建不需要创建外部类实例。

2.静态内部类可以直接访问外部类的静态成员,要访问外部类的实例成员就需要通过外部类的实例来创建啦,这条要注意!

3.静态内部类中可以定义静态成员,也可定义非静态成员,也就是实例成员。

4.客户类可以直接访问静态内部类的静态成员(即实例成员不可以)

三、局部内部类(在方法中定义的类)

1.局部内部类只能在方法中使用。

2.和实例内部类一样,局部内部类中不能有静态成员。

3.不能被public、protected、private这些修饰符修饰。

4.局部内部类和实例内部类一样,可以访问外部类的所有成员。

四、匿名内部类(木有名字的类)

1.没有构造方法,可以调用父类的构造方法,new A(){};

2.虽然没有构造方法,但可以通过在类内用{}括起来进行初始化。

3.在方法内/外都可以定义匿名内部类,一个局部变量,一个成员变量。

4.匿名内部类除了可以继承类,还可以实现接口。

5.匿名内部类在方法中是,要是访问方法内部的变量,该变量要声明成final类型的。可以访问外部类的所有成员。

6.同局部内部类一样,对外部是不可见的,具有较好的封装性。

匿名内部类代码较短,没有重载构造方法,只能创建一次实例。局部内部类可以创建多个实力,有多个重载构造方法。

内部类的继承,当具有相同的内部类时,不存在内部类的覆盖,因为内部类位于不同的命名空间,不会发成冲突。

内部类的用途:封装类型、直接访问外部类的成员、回调。

回调实质上是指一个类尽管实际上实现了某种功能,但是没有直接提供相应的接口,客户类可以通过这个类的内部类的接口来获得这种功能。这个内部类本身兵没有提供真正的实现,而是调用外部类的实现。回调充分发挥了内部类所具有的访问外部类的实现细节的优势。

这些条条框框的,没必要死机,平时自己编程时,就会遇到,熟能生巧,慢慢就很清楚啦,哈哈,我是这么认为滴~

抱歉!评论已关闭.