+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
内部类、局部内部类、匿名内部类
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
* <内部类>:定义在 另一个类 中的 类。
* 使用原因:
1.内部类方法,可以访问 <外部类> 定义所在的作用域 中的数据,包括私有数据
2.内部类可以对 <同一个包中其他类> 隐藏
3.当想要定义一个 <回调函数> 且 不想写很多代码时,使用<匿名类> 简洁
**/
public class TalkingClock {
private int interval;
private boolean beep;
public void start(){
...
}
//内部类
public class TimePrinter implements ActionListener{
@Override
public void actionPerformed(ActionEvent event){
Date now = new Date();
...
//OuterClass.this.attr ---> 在<内部类>中 使用 <外部类>引用
if(TalkClock.this.beep) Toolkit.getDefaultToolkit().beep();
}
}
}
/**
* <局部内部类> ----- 将<内部类>定义在<外部类>的某个 方法中
**/
public void start(){
//1.局部类 不能 用public/private声明,其作用于 被限定在 声明这个局部类的<块>中
//2.局部类【优势】:对<块>之外的完全隐藏,即使<外部类>其他代码 也 不能访问
class TimePrinter implements ActionListener{
@Override
public void actionPerformed(ActionEvent event){
Date now = new Date();
...
}
}
ActionListener listener = new TimePrinter();
}
/**
* <匿名内部类>(匿名类) ------ 没有类名;所以,不能有构造器;
* <匿名内部类> 是对 <局部内部类>的深入一步; 如果只创建这个类 一个对象,就不必命名了
**/
public void start(int interval, final boolean beep){
ActionListen listener = new ActionListent(){
@Override
public void actionPerformed(ActionEvent event){
Date now = new Date();
....
}
}
}
我在IBM工作,可以为大家内部推荐IBM各种职位
IBM全球职位尽在以下链接(请在浏览器中打开,QQ/微信 会阻止):
http://ibmreferrals.com/
很乐意为感兴趣的小伙伴分享:我的面试经验^_^
如需咨询,请邮件发送以下邮箱,有问必回
1026096425@qq.com