您的位置:

java常用的内部类(java内部类的使用)

本文目录一览:

Java内部类有几种?

Java中的几种内部类:

成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列。当某个类除了他的外部类,不会被其他类使用时应该选择使用成员内部类。

局部内部类:局部内部类定义在外部类的某个代码块或方法块中。如果只会在某个方法或块中创建这个类的对象,就可以使用局部内部类。

匿名内部类:匿名内部类一般定义在需要传递接口或回调的的地方,一个匿名内部类一定是在new的后面,用其隐含实现一个接口或继承一个类。假如只需要创建这个类的一个对象不需要知道其实际类型(不需要使用到类名),那么就可以使用匿名内部类。

静态内部类:和成员内部类一样,作为外部类的一个成员存在,与外部类的属性、方法并列,只不过在声明类的时候加入了static关键字。有时候,使用内部类只是为了把一个类隐藏在另外一个类的内部,并不需要内部类引用外围类对象。这时可以使用静态内部类,以便取消产生对外部类的引用。

java里面的内部类和外部类是什么?_?

外部类:

最普通的,我们平时见到的那种类,就是在一个后缀为.java的文件中,直接定义的类

内部类:

内部类,顾名思义,就是包含在外部类中的类,就叫做内部类。内部类有两种,一种是静态内部类,一种是非静态内部类。

静态内部类和非静态内部类之间的区别主要如下:

1、内部原理的区别:

静态内部类是属于外部类的类成员,是一种静态的成员,是属于类的,就有点类似于private static Singleton instance = null;非静态内部类,是属于外部类的实例对象的一个实例成员,静态类则是属于所有外部共有的,也就是说,每个非静态内部类,不是属于外部类的,是属于外部类的每一个实例的,创建非静态内部类的实例以后,非静态内部类实例,是必须跟一个外部类的实例进行关联和有寄存关系的。

2、创建方式的区别:

创建静态内部类的实例的时候,只要直接使用“外部类.内部类()”的方式,就可以,比如School.Teacher();创建非静态内部类的实例的时候,必须要先创建一个外部类的实例,然后通过外部类的实例,再来创建内部类的实例,new School().Teacher()

通常来说,我们一般都会为了方便,会选择使用静态内部类。

什么是java内部类

1、嵌套类,如Inner1,Inner2,StaticInner(静态内部类)就是内部类:

class Outter

{

class Inner1

{

}

class Inner2

{

}

static class StaticInner

{

}

}

2、匿名内部类,如:

Thread t=new Thread(new Runnable() {

public void run() {

//

}

});

其中new Runnable() {

public void run() {

//

}

}的作用就是创建一个实现了接口Runnable的匿名内部类的实例,而最外层的{}就是这个匿名内部类的定义。