A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoqiao 中级黑马   /  2015-7-10 13:52  /  395 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内部类
作用:内部类提供了更好的封装;内部类成员可以直接访问外部类的私有数据,但外部类不能访问内部类的实现细节(例如内部类的成员变量);匿名内部类适合用于那些仅需要一次使用的类。
成员内部类分为两种:静态内部类和非静态内部类,使用static修饰的成员内部类是静态内部类,没有使用static修饰的成员内部类是非静态内部类。
内部类作为其外部类的成员,可以使用任意访问控制符如private、protected、public等修饰。
成员内部类(包括静态内部类、非静态内部类)的class文件总是这种形式:OuterClass$InnterClass.class,如果外部类成员变量、内部类成员变量与内部类里方法的局部变量同名,则可通过外部类类名.this、this作为限定来区分。
        不允许在外部类的静态成员中直接访问非静态内部类,Java不允许在非静态内部类里定义静态成员
静态内部类:
static关键字不可修饰外部类,但可修饰内部类。
使用static修饰的内部类属于外部类本身,而不属于外部类的某个对象。静态内部类可以包含静态成员,也可以包含非静态成员。根据静态成员不能访问非静态成员的规则,静态内部类不能访问外部类的实例成员,只能访问外部类的类成员。
Java还允许在接口里定义内部类,接口里定义的内部类默认使用public static 修饰,即接口内部类只能是静态内部类。(很少使用)
局部内部类:把一个内部类放在方法里定义,这个内部类就是一个局部内部类,局部内部类仅在该方法内有效,不能使用访问控制符和static修饰符修饰。
匿名内部类:适合用于那些仅需要一次使用的类
定义匿名内部类的格式:
new 父类构造器(参数列表)|实现接口()
{
        //匿名内部类的类体部分
}
匿名内部类必须继承一个父类或实现一个接口,但最多只能继承一个父类或实现一个接口。
匿名内部类不能是抽象类,因为系统在创建匿名内部类时,会立即创建匿名内部类的对象。匿名内部类不能定义构造器,因为匿名内部类没有类名,无法定义构造器
如果匿名内部类需要访问外部类的局部变量,必须使用final修饰符来修饰外部类的局部变量,,否则系统将报错。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马