您的位置:首页 > 职场人生

26.黑马程序员-内部类

2012-10-17 08:56 211 查看
------- android培训java培训、期待与您交流! ----------
1.概念

将一个类定义在另一个类的里卖弄,对里面那个类被称为内部类(内置累、嵌套类)。

2.定义

class Outer
{

成员变量
class Inner
{

//内部类也可以定义成员变量、成员函数
//内部类可以直接访问外部类的成员(包括私有),而不用创建外部类对象。
void function()
{

Sop("inner");

}

}
void method()
{

inner in = new Inner();//创建inner对象
in.function();//调用内部类方法。

}

}

3.使用方法

外部类访问内部类:创建内部类的对象,调用内部类的方法。
而内部类不需要创建外部类的对象,就可以直接使用外部类的成员(包括私有)。原因是内部类持有一个外部类的引用,这个引用的格式是:外部类.this。
在其他地方使用内部类时,需要加上外部类名,格式是:Outer.Inner in = new Outer().new Inner; 这种格式很少使用。一般情况是:内部类作为成员被私有修饰,不允许其他类直接访问。

4.访问规则

内部类定义在另一个类(外部类)里面,可以定义自己的成员变量、成员函数。
内部类也可以定义成员变量、成员函数
内部类可以直接访问外部类的成员(包括私有),而不用创建外部类对象。

5.访问规则2

当内部类在成员位置上,就可以被成员修饰符所修饰。

比如,

private:将内部类在外部类中进行封装。
static:内部类就具备static的特性。

当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限。
在外部其他类中,如何直接访问static内部类的非静态成员呢?

new Outer . Inner().function();//新对象 外部类名.内部类().方法

在外部其他类中,如何直接访问static内部类的静态成员呢?

Outer.Inner.function(); //外部类名.内部类名.方法

注意:

当内部类中定义了静态成员,该内部类必须是static的。这个是内部类的一个特点。
当外部类中的静态方法访问内部类时,内部类也必须是静态的。

6.内部类什么时候使用?

当类用来描述事物时,该事物中还有事物,该事物用内部类来描述,因为内部事务在使用外部事物的内容。举例:描述人体class body,人体由心脏等组成,心脏的描述成员太多,并且心脏访问人体里的其他数据,需要封装成一个类,心脏heart就是一个内部类。心脏不需要对外暴露,所以private。body 可以提供一个方法使外部访问,当然需要一些条件,不能随便访问心脏吧^_^。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: