读书人

温习java内部类

发布时间: 2012-12-26 14:39:28 作者: rapoo

复习java内部类

?

?

内部类定义:是定义在另一个类中的类。

内部类的作用:

内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。内部类可以对同一个包中的其他类隐藏起来。当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。

内部类点滴:

只有内部类可以是私有类,而常规类只能具有包可见性或者公有可见性。内部类对象拥有一个对外围类对象的隐式引用,这个引用是通过内部类构造器传递过来的,编译器会对这个构造器进行修改,以便添加一个外围类的引用参数。(注:这是一个编译器行为)内部类的特殊语法规则。OutClass.this引用外部类对象,OuterObject.new InnerClass(args)创建内部类内部类的内部局部内部类。不能用public或者private访问控制符进行声明,引用的局部变量是final的。(想想为什么是final的?因为内部类会备份一份final的局部变量,是为了直到他执行的时候变量的值没有发生变化)静态内部类。使用内部类是为了把一个类隐藏在另一个类的内部,并不需要内部类的引用外围类对象。为此,可以将内部类声明为static,以便取消引用,当然只有内部类可以声明为static,静态内部类的对象除了没有对生成它的外围类对象的引用特权外,与其他的所有内部类完全一样。
public class CheckBox {private boolean checked;//这个内部类是包可见性,只有包含它的外围类和它所在的包中的其他类能访问到它,当然子类也可以访问的到class OnClickListener{//虽然是public,由于类本身是包访问权限,所以受限于包权限public void itemClick(){System.out.println("我被点击了");}}//不写操作修饰符,默认的是default,包访问权限boolean isChecked(){return checked;}//这个内部类是完全公开的,可以被外部其他包的类访问public class onDoubleClickListener{//可以被访问的到public void itemClick(){System.out.println("我被双击了");}}//只可以被外围类访问的到private class onMouseOverListener{//受限于类本上是private,所以只有外围类能访问的到public void itemOver(){System.out.println("鼠标飘过去了");}}}

?



?

读书人网 >编程

热点推荐