您的位置:首页 > 其它

内部类

2016-03-10 17:33 211 查看

内部类

什么叫内部类呢?其实顾名思义,就是位于一个类内部的类,除了位置是在一个类的内部,其余的类里面的东西,和外部的一般类没有任何区别。
但是,我们可以从以下几个方面来讨论。
首先是访问规则。
eg:class Outer
{
private int x=3;
class Inner
{
public void show()
{
System.out.println("Inner:"+x);
}
}
public void search()
{
Inner in=new Inner();
in.show();
}
}
public class Demo

{

public static void main(String []args)

{

Outer ou=new Outer();

ou.search();

}

}

这段程序的结果是Inner:3

从这个程序可以看出,内部类可以访问它所在的外部类的成员变量,甚至是私有的变量:当外部类的函数想访问内部类的函数时,需要先建立内部类的对象,再访问那个方法

其次,再从访问的格式来讨论:

1:当内部类定义在外部类的成员位置上时且无任何修饰的关键词时,可以:在外部其他类中直接建立内部类对象

格式:外部类名.内部类名 变量名=外部类对象.内部类对象

eg:Outer.Inner in=new Outer().new Inner();

2:当内部类在成员位置上且被修饰时,比如private,static等。它的访问方式就会不一样。

当被static:内部类就具备static的特性,比如可以直接被类名.调用

eg:Outer.Inner.show();

但是当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限:当内部类中定义了静态成员,该内部类必须是静态的;当外部类中的静态方法访问内部类时,内部类也必须是静态的:当内部类是静态时,不可以访问非静态的成员

3:局部内部类不能被private static等关键字修饰,其次,内部类定义在局部时,如果想访问里面的方法,必须在类建立后建立这个内部类的对象,里面的方法才能被访问:可以直接访问外部内中的成员,但是不可以访问它所在的局部中的成员,只能访问被final修饰的成员

再者,就是我们在什么时候定义内部类呢?就拿我们人来说,我们内部的器官和我们的身体,如果我们先定义了一个人体,再想描述器官的时候,就需要把器官的类定义在人体的类的里面,这样比较符合我们队事物的认知。因为内脏本来就是存在于人体内部的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: