21xrx.com
2025-03-27 12:13:02 Thursday
文章检索 我的文章 写文章
Java内部类的使用及案例分析
2023-06-15 09:37:12 深夜i     11     0
Java内部类 成员内部类 局部内部类

Java内部类是指定义在另一个类内部的一个类。在Java中,内部类相对于普通的类具有更加的灵活性和强大的功能,它可以访问外部类的所有成员变量、方法以及静态成员,而外部类无法访问内部类的成员。本文将分别对Java内部类的使用以及案例进行介绍。

1. Java内部类的使用

Java内部类的使用首先需要了解两种内部类的类型:成员内部类和局部内部类。

1.1 成员内部类

成员内部类就是在一个类的内部定义的另一个类,其定义在外部类的内部,而不是在方法中。举个例子:

public class OuterClass {
  private int x = 10;
  class InnerClass {
    public void print() {
      System.out.println("x is " + x);
    }
  }
}

上述代码就定义了一个名为InnerClass的成员内部类,它可以访问外部类的私有成员变量x,并进行输出。使用方式如下:

OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();

通过outer.new InnerClass()方法获取内部类对应的对象,再调用内部类提供的方法即可,该输出结果为:x is 10。

1.2 局部内部类

局部内部类也是在一个类的内部定义的另一个类,但是它的定义在方法中。举个例子:

public class OuterClass {
  private int x = 10;
  public void method() {
    class InnerClass {
      public void print() {
        System.out.println("x is " + x);
      }
    }
    InnerClass inner = new InnerClass();
    inner.print();
  }
}

上述代码就定义了一个名为InnerClass的局部内部类,并在method()方法中创建了该内部类对应的对象。使用方式如下:

OuterClass outer = new OuterClass();
outer.method();

该输出结果同样为:x is 10。

2. Java内部类案例

下面给出一个基于成员内部类的案例,实现一个简单的计数器。我们定义一个外部类Counter,内部定义一个成员内部类CounterInternal,用来存放计数器的当前值。实现代码如下:

public class Counter {
  private int count = 0;
  class CounterInternal {
    public void increment() {
      count++;
    }
    public void decrement()
      count--;
    
    public int getValue()
      return count;
    
  }
  public void print() {
    CounterInternal inner = new CounterInternal();
    inner.increment();
    System.out.println("current count is " + inner.getValue());
  }
}

我们首先定义了一个计数器的初始化值为0,并实现了一个名为CounterInternal的成员内部类,它包含三个方法:increment()实现计数器加1,decrement()实现计数器减1,getValue()获取计数器当前值。然后我们在print()方法中实例化CounterInternal,并调用increment()方法进行计数器加1,并输出当前值。

使用方式如下:

Counter counter = new Counter();
counter.print();

该输出结果为:current count is 1。

3. 关键词

Java内部类、成员内部类、局部内部类

  
  

评论区