zoukankan      html  css  js  c++  java
  • corejDay1

    1、内部类:

    有什么用?

    1、可以访问该类定义所在作用域中的数据,包括私有数据。

    2、当想定义一个回调函数而不想编写大量代码时,使用匿名内部类比较便捷。

    3、内部类可以对同一个包中的其他类隐藏起来。

    什么时候用?

    1、想省代码

    2、想访问本类数据

    3、想隐藏数据(要写的类,仅被一个类使用一次)

    简单内部类举例

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    /**
     * Created by xkfx on 2017/2/12.
     */
    public class InnerClassTest{
        public static void main(String[] args){
            TalkingClock clock = new TalkingClock(1000 , true); //参数改成100系统不响铃
            clock.start();
    
            JOptionPane.showMessageDialog(null , "Quit?");  //没有这两行代码,程序无法运行???
            System.exit(0);
        }
    }
    
    class TalkingClock{
        private int interval;
        private boolean beep;
    
        public TalkingClock(int interval, boolean beep){
            this.interval = interval;
            this.beep = beep;
        }
    
        /**
         * Starts the clock
         */
        public void start(){
            ActionListener listener = new TimePrinter();
            Timer t = new Timer(interval , listener);
            t.start();
        }
    
        private class TimePrinter implements ActionListener{    //设置成private就实现了封装
    
            //这里有一个不可见的隐式引用 outer = 外围类对象
            //下面的beep等价于 outer.beep
            //TimePrinter有一个隐式的构造器 public TimePrinter(TalkingClock clock){ outer = clock; }
    
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("...");
                if(beep) Toolkit.getDefaultToolkit().beep();    //内部类可以访问外围类对象的数据域
            }
        }
    }

    内部类的语法规则

    局部内部类

    :在一个方法中定义类

    匿名内部类

    :例如

    public void start(int interval, boolean beep)
    {
        ActionListener listener = new ActionListener(){
            public void actionPerformed(ActionEvent event){
                System.out.println("...");
                if(beep){
                    Toolkit.getDefaultToolkit().beep();
                }
            }
        };
        Timer t = new Timer(interval, listener);
        t.start();
    }

    如何将静态内部类镶嵌在辅助类中

     

    2、代理

    有什么用?

    可以在运行时创建一个实现了一组给定接口的新类。

    只有在编译时无法确定需要实现哪个接口时才有必要使用。

    什么时候用?

  • 相关阅读:
    Jqgrid学习
    【转】SpringMVC 流程图
    【转】spring学习之@SessionAttributes
    【转】HttpSessionListener, HttpSessionAttributeListener的用法
    Java会话(session)管理
    hibernate--一对多xxx.hbm.xm配置
    使用Spring容器
    最简单的hibernate入门、配置
    搭建Struts 2的工作环境
    Struts2的常用标签
  • 原文地址:https://www.cnblogs.com/xkxf/p/6390926.html
Copyright © 2011-2022 走看看