内部类
什么是内部类?内部类其实就是在一个类中创建的类。
内部类有四种:
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
public class OuterClass{
public class GlobalInnerClass{}
public final static class GlobalStaticInnerClass{}
public void foo(){
class MethodInnerClass{}
new Runnable(){
@Override
public void run() {
}
};
}
}
成员内部类
内部成员类的一些例子:
public class GlobalInnerClassInstanceExample {
private String bar;
public GlobalInnerClassInstanceExample(String bar){
this.bar = bar;
}
class InnerClass{
public String getOuterBar(){
return GlobalInnerClassInstanceExample.this.bar;
//or return bar;
}
public void setOuterBar(String bar){
GlobalInnerClassInstanceExample.this.bar = bar;
}
private String name;
}
public static void main(String[] args) {
//创建成员内部类
GlobalInnerClassInstanceExample outerCls = new GlobalInnerClassInstanceExample("foo");
InnerClass innerCls = outerCls.new InnerClass();
//获取外部类私有属性
innerCls.getOuterBar();
//修改外部类的私有属性
innerCls.setOuterBar("bar");
}
}
成员内部类,是属于宿主类实例的属性,必须用宿主类的实例进行创建。
通过上面的例子,可以发现,我们可以使用内部类得到外部类的bar
,和修改bar
。
除了对属性进行操作,我们可以用内部类的实例调用宿主类的函数,包括私有的函数。
其实有些同学会觉得,一个类怎么可能操作另一个类的私有属性和函数呢?
说到底,成员内部类其实是属于宿主类的一个成员。Java 中,类的成员当然有权限操作类中的所有方法和属性了。
网友评论