Java中的内部类

来源:互联网 发布:疯狂java讲义下载 编辑:程序博客网 时间:2024/06/09 21:18

首先,什么是内部类?

内部类就是定义在另外一个类里面的类。

主要有以下几个作用:

1,内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。

2,内部类的方法可以直接访问外部类的所有数据,包括私有的数据。

3,内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。

内部类的分类:

1,成员内部类

2,静态内部类

3,方法内部类

4,匿名内部类


一个简单的内部类例子:

//外部类HelloWorld

public class HelloWorld{

//内部类Inner,类Inner在类HellooWorld类里面

public class Inner{

//内部类的方法

public void show(){

System.out.println("wellcome to my blog");

}

}

public static void main(String[ ] args){

//创建外部类对象

HelloWorld hello = new HelloWorld();

//创建内部类对象

Inner i = hello.new Inner();

//调用内部类对象的方法

i.show();

}

}



注意事项:

1,外部类不能直接使用内部类的成员和方法。一般都是通过创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

2,如果外部类和内部类具有相同的成员变量和方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,需要使用this关键字。



静态内部类

特点:1,静态内部类不能直接访问外部类的非静态成员,但可以通过new() 外部类().成员  的方式访问。

     2,如果外部类的静态成员与内部类的成员名称相同,可以通过“类名.静态成员”  访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”  直接调用外部类的静态成员

     3,创建静态内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名 = new 内部类();



一个简单的静态内部类例子:

//外部类

Public class Out{

private int a = 1;//外部类的私有变量

static int b = 2;//外部类的静态变量

//静态内部类

public static class Inner{

int b = 3;//内部类的变量

public void test(){

System.out.println("访问外部类中的b"+Out.b);

System.out.println("访问内部类的b"+b);

}

}

//测试静态内部类

public static void main(String[ ] args){

Inner s = new Inner();//直接创建内部类的对象

s.test();//调用test方法

}

}