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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 82387737 中级黑马   /  2014-12-26 21:45  /  652 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内部类
定义:将一个类定义在另一个类里面,对里面那个类就成为内部类。(嵌套类,内置类)
特点:内部类可以直接访问外部类中的成员,包括私有成员。
  而外部类要访问内部类中的成员,则必须要创建对象。

位置:
A.成员位置—— 成员内部类
B.局部位置—— 局部内部类

成员内部类
使用:直接使用  外部类名.内部类名 变量名 = new 外部类().new内部类名();

内部类的修饰符:
A.private 为了安全考虑。常见用法。
B.Static 为了方便考虑。

内部类如果被静态修饰。
外部类名.内部类名 变量名 = new 外部类名.内部类名();
也可以  外部类名.静态类名.静态方法();

局部内部类
结论:局部内部类访问局部变量,需要变量被声明为final;
使用:不能直接创建对象,要在所在方法中创建对象使用。
为什么?局部变量会在方法调用完毕后立即消失。
而局部内部类中还使用着局部变量,这个方法区中的内容还没有消失。为了延长局部变量的生命周期,则必须使用final修饰,将变量放入方法区的常量区。

匿名内部类
定义:没有名字的局部内部类
前提:匿名内部类必须继承或实现一个类,抽象类或者接口。
格式:
New 类名或者接口名(){
重写类或者接口中的方法。
也可以自己定义心的方法。
};《======这里要有一个分号。因为如果单独存在需要表示语句结束。
理解:
是一个继承了类或者实现了接口的匿名的子类对象。
用法:
在匿名内部类后面直接.方法名。
场景:
一般来说,当接口或者抽象类中的方法在3个以下的时候,考虑使用匿名内部类。以后在看到一个方法接受的形参是一个抽象类或者是一个接口的时候,就可以考虑采用匿名内部类实现。
调用多个内部方法,可以将匿名内部类赋给父类或者接口的引用。(多态接口实现);

使用:所有父类或者父接口出现的地方,完全可以用子类替代。

0 个回复

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