zoukankan      html  css  js  c++  java
  • java笔记匿名内部类和静态内部类的理解和使用

    匿名内部类

    --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html  "谢谢--

    1.由于局部内部类并不可见,因此不如使用匿名内部类替代。
    只有当需要定义或重写类的构造方法,或者需要多个类的对象时,才建议使用局部内部类。
    2.由于构造方法必须与类名相同,而匿名内部类没有类名,因此不能为其定义构造方法。
    如果程序代码非常简单,则使用匿名内部类会使结构比价清晰。反之则不推荐使用匿名内部类。
    3.匿名内部类常用于Swing中的组件的监控:
    如:
    ActionListenner listener = new ActionListenner(){
    public void actionPerformed(ActionEvent e){}
    };

    静态内部类

    静态内部类是使用static修饰的内部类,在静态内部类中,可以使用外部类定义的静态域,
    但是不能使用非静态域,这是静态内部类与非静态内部类最大的区别
    如:
    public void fuction(){
    public static class ObjectB{}
    }
    注意:ObjectB类不能声明成private的,否则不能使用其中定义的方法。

    静态内部类的使用:
    在内部类不需要访问外部类的对象时,可以将其设置成静态内部类。
    可以像静态域和方法那样使用类名来引用静态内部类。

    例如:
    利用静态内部类来求一个数组的最大值和最小值:
    package com.xhj.OOP.innerclass;

    /**
    * 静态内部类的使用
    *
    * @author XIEHEJUN
    *
    */
    public class InnerStaticClass {

    public static class ResultInner {
    private double max;
    private double min;

    public ResultInner(double max, double min) {
    this.max = max;
    this.min = min;
    System.out.println("max = "+max+"\tmin = "+min);
    }

    public double getMax() {
    return max;
    }

    public double getMin() {
    return min;
    }
    }

    /**
    * 遍历数组,求出数组最大值和最小值
    *
    * @param array
    * @return
    */
    public static ResultInner getResult(double[] array) {
    double max = Double.MIN_VALUE;
    double min = Double.MAX_VALUE;
    for (double d : array) {
    if (d > max) {
    max = d;
    }
    if (d < min) {
    min = d;
    }
    }
    return new ResultInner(max, min);
    }

    public static void main(String[] args) {
    double[] array = new double[5];
    System.out.println("源数组为:");
    for (int i = 0; i < 5; i++) {
    array[i] = 10* Math.random();
    System.out.println(i+" "+array[i]);
    }
    System.out.println("遍历排序和后结果为:");
    getResult(array);
    }
    }

  • 相关阅读:
    url中的特殊字符问题
    Gridview中几个Button的应用
    Asp.net中static变量和viewstate的使用方法(谨慎)
    my97DatePicker选择年、季度、月、周、日
    Server.MapPath()
    asp.net(C#)读取文件夹和子文件夹下所有文件,绑定到GRIDVIEW并排序 .
    sql union和union all的用法及效率
    asp.net 字符串替换、截取和从字符串中最后某个字符 开始截取
    ASP.NET
    sql中查询中的when...then 语句
  • 原文地址:https://www.cnblogs.com/XHJT/p/3889467.html
Copyright © 2011-2022 走看看