内部类

梦想与她 提交于 2020-01-26 06:18:34

内部类:类存在于其他类内部。

一般,内部类与包含它的外部类有比较密切的关系,而与其他类关系不大,定义在类内部,可以实现

对外部完全隐藏,有更好的封装性,代码实现更为简洁

内部类可以方便的访问外部类的私有变量,可以声明为private从而实现对外完全隐藏

根据定义的位置和方式不同,可分为4类:

静态内部类,成员内部类(两者均可被外部使用)

方法内部类,匿名内部类(都不能在外部使用)

1.静态内部类

静态内部类与静态变量和静态方法定义的位置一样,也带有static关键字。

静态内部类除了位置放在其他类内部外,与一个独立的类差别不大。它只可以访问外部类的静态变量和方法、

public 静态内部类可以被外部使用,通过“外部类.静态内部类”的方法使用

如:Outer.StaticInner si =new Outer.StaticInner()

       si.innerMethod();

java会为内部类生成一个访问私有变量的非私有方法

2.成员内部类

除了访问静态变量和方法,成员内部类还可以访问外部类的实例变量和方法,还可以通过“外部类.this.xxx”的方式引用外部类的实例变量和方法,一般在重名情况下使用。

成员内部类对象总与一个外部类对象相连,在外部使用时不能直接通过new Outer.Inner()方式创建对象,而是要先创建一个Outer类对象

Outer outer=new Outer;

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

inner.innerMethod();

3.方法内部类

定义在外部类方法中,只能在定义的方法中被使用。

如果方法是实例方法,则内部类可以访问静态变量和方法,实例变量和方法

如果方法是静态方法,则方法内部类只能访问外部类的静态变量和方法nim

方法内部类还可以访问方法的参数和方法中的局部变量,前提是这些变量被声明为final

4.匿名内部类

new 父类(参数列表){

//匿名内部类实现部分

}

new 父接口(){

//匿名内部类实现部分

}

只能使用一次,用来创建一个对象,没有名字,构造方法

可以访问外部类所有变量与方法,可以访问方法中的·final参数和局部变量

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!