21xrx.com
2024-11-25 05:12:28 Monday
登录
文章检索 我的文章 写文章
Java内部类详解:实现方式和应用举例
2023-06-12 00:40:51 深夜i     --     --
Java 内部类 实现方式 应用举例 监听器 迭代器 工厂类

Java是一门面向对象的编程语言,在其面向对象的编程方式中,内部类是一个非常重要的概念。本文将为大家详细介绍Java内部类的实现方式和应用举例。

一、内部类的实现方式

Java内部类的实现方式主要有以下四种:

1.成员内部类

成员内部类是定义在一个类内部的非静态类。成员内部类可以访问外部类的所有成员,包括私有成员。

代码示例:


public class OuterClass {

  private int a = 1;

  

  public class InnerClass {

    public void printA() {

      System.out.println(a);

    }

  }

}

2.局部内部类

局部内部类是定义在方法内部的类,它只在该方法内可见。

代码示例:


public class OuterClass {

  public void doSomething() {

    class InnerClass {

      public void print() {

        System.out.println("Hello, world!");

      }

    }

    

    InnerClass inner = new InnerClass();

    inner.print();

  }

}

3.静态内部类

静态内部类是一个独立的类,静态内部类无法访问外部类非静态成员,但可以访问外部类的静态成员。

代码示例:


public class OuterClass {

  private static int a = 1;

  

  public static class InnerClass {

    public void printA() {

      System.out.println(a);

    }

  }

}

4.匿名内部类

匿名内部类没有类名,它必须在创建时继承一个父类或实现一个接口,同时可以重写该父类或接口中的方法。匿名内部类常用于事件处理等场景。

代码示例:


public interface MyInterface {

  public void sayHello();

}

public class OuterClass {

  public void doSomething() {

    MyInterface myInterface = new MyInterface() {

      @Override

      public void sayHello() {

        System.out.println("Hello, world!");

      }

    };

    

    myInterface.sayHello();

  }

}

二、内部类的应用举例

1.监听器实现

监听器是Java GUI编程中常用的一种实现方式。它的实现原理就是在一个外部类中创建内部类,内部类继承自Java提供的监听器接口,然后在内部类的方法中编写监听器响应的逻辑。

代码示例:


public class MyButton {

  public void addClickListener(ActionListener listener)

    // some code

  

  

  public void removeClickListener(ActionListener listener)

    // some code

  

}

public class MyFrame extends JFrame {

  private MyButton button;

  

  public MyFrame() {

    button = new MyButton();

    button.addClickListener(new ActionListener() {

      @Override

      public void actionPerformed(ActionEvent e) {

        System.out.println("Button clicked!");

      }

    });

    

    // some code

  }

}

2.迭代器实现

Java中的迭代器用于遍历一个集合,通常使用内部类实现。内部类可以直接访问集合的私有成员,而且内部类只在集合中使用,不会对其他代码造成影响。

代码示例:


public class MyCollection {

  private List list = new ArrayList<>();

  

  public void add(String str) {

    list.add(str);

  }

  

  public InnerIterator iterator() {

    return new InnerIterator();

  }

  

  private class InnerIterator implements Iterator {

    private int index = 0;

    

    @Override

    public boolean hasNext() {

      return index < list.size();

    }

    

    @Override

    public String next() {

      return list.get(index++);

    }

    

    @Override

    public void remove() {

      list.remove(index--);

    }

  }

}

3.工厂类实现

工厂类是Java编程中常用的一种模式,它的实现原理就是在一个外部类中创建内部类来实现不同的功能。内部类可以访问外部类的私有成员,同时内部类也可以定义自己的私有成员,以实现不同的功能。

代码示例:


public class MyFactory {

  public MyInterface create(String type) {

    if ("A".equals(type)) {

      // 返回 A 对象

      return new A();

    } else if ("B".equals(type)) {

      // 返回 B 对象

      return new B();

    } else {

      // 返回默认对象

      return new Default();

    }

  }

  

  private interface MyInterface {

    public void doSomething();

  }

  

  private class A implements MyInterface {

    @Override

    public void doSomething()

      // 实现 A 对象的 doSomething 方法

    

  }

  

  private class B implements MyInterface {

    @Override

    public void doSomething()

      // 实现 B 对象的 doSomething 方法

    

  }

  

  private class Default implements MyInterface {

    @Override

    public void doSomething()

      // 实现默认对象的 doSomething 方法

    

  }

}

三、关键词

Java、内部类、实现方式、应用举例、监听器、迭代器、工厂类

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复