• 内部类、局部内部类、匿名内部类


       +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    内部类、局部内部类、匿名内部类
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    /**
    * <内部类>:定义在 另一个类 中的 类。
    * 使用原因:
    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
  • 相关阅读:
    指针和数组的关系
    深入学习数组
    const关键字与指针
    野指针是什么
    指针带来的一些符号的理解
    指针的本质
    内存管理之堆
    内存管理之栈
    元类
    断点调式和面向对象进阶
  • 原文地址:https://www.cnblogs.com/jackydalong/p/2408511.html
Copyright © 2020-2023  润新知