21xrx.com
2025-03-23 16:24:16 Sunday
文章检索 我的文章 写文章
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、内部类、实现方式、应用举例、监听器、迭代器、工厂类

  
  

评论区