黑马程序员_内部类

将 一个类,定义在另一类的内部。

 

1,、内部类,可以访问外部类的私有成员

2、内部类可以被私有修饰,不为同一个包中的其他类访问。

3、外部类访问内部类,必须要创建 内部类的对象。

4、内部类可以声明为抽象的,被其他内部类继承

5、内部类可以使用final修饰符,                       abstract 和final 不能同时使用。

6、内部类可以声明为private 和protected

 

内部类 不能独立存在,所以在创建 内部类时,必须进行标识这个内部类是属于哪个外部类。

 

 

之所以可以直接访问外部类中的成员,是因为内部类中持有外部类的引用,格式 外部类.this

 

 

 

------------------

 

当内部类 定义在外部类的成员位置上时,且  非私有,可以再外部其他类中创建对象。

 

外部类名.内部类名  对象名  = new 外部类名.new 内部类名();

Outer      .  Inner        i       = new Outer()  .new   Inner();

 

 

-------------------

静态内部类

 

如果内部类是静态的

 

外部类名.内部类名 对象名 =  new 外部类构造方法 . 内部类构造方法;

Outer .Inner                       i      =  new Outer.Inner();

 

如果内部类是静态的,这个类只能访问外部类的静态成员。出现了 访问局限性。

如果内部类的方法是静态的,这个内部类必须是静态的。

如果外部类的方法是静态的,访问内部类,内部类也必须是静态的;

 

---------------------

 

 

局部内部类

 

在 外部类的方法中定义一个类,,这个类只能在 这个方法体中使用,

如果这个类 要访问这个方法中的局部变量,这个局部变量需要定义为final。

 

 

---------------------

 

匿名内部类

 

 

1、匿名内部类的方法最好不要超过三个。

2、匿名内部类不可能定义为抽象的,因为系统在创建匿名内部类是,会立即创建匿名内部类的对象。

就是一个 没有名字的内部类。。这个类必须继承一个类,或者实现一个接口。

创建匿名内部类时会立即创建一个类的实例,这个类定义立即消失,匿名内部类不能重复使用。适合创建需要一次使用的类。

 

 

匿名内部类不能定义构造方法,因为匿名内部类没有类名,所以无法定义构造方法。 但是可以定义实例代码块,通过实例代码块来完成构造方法要完成的工作。

 

 

 

 

 

posted @ 2014-06-21 19:51  LoreSave  阅读(120)  评论(0编辑  收藏  举报