21xrx.com
2025-04-12 17:07:12 Saturday
文章检索 我的文章 写文章
Java内部类的定义方式及应用场景
2023-06-14 06:10:26 深夜i     14     0
Java内部类 成员内部类 静态内部类

Java内部类是指定义在一个类或方法内部的类,与外部类形成了一种合成关系。与外部类不同的是,内部类在访问外部类的属性和方法时具有更大的灵活性和可控性。Java内部类的定义方式有以下几种:

1.成员内部类:定义在类的内部,但在方法之外的类。

public class OuterClass {
  private int num = 10;
  public class InnerClass {
    public void print() {
      System.out.println("In InnerClass print method, num is " + num);
    }
  }
  public static void main(String[] args) {
    OuterClass outer = new OuterClass();
    OuterClass.InnerClass inner = outer.new InnerClass();
    inner.print(); // 输出:In InnerClass print method, num is 10
  }
}

在成员内部类中,可以使用外部类的所有成员变量和方法,而且可以向正常的类一样定义自己的成员变量和方法。使用方式为:外部类名.内部类名 内部类对象 = 外部类对象.new 内部类名();

2.静态内部类:定义在类的内部,但被声明为静态。

public class OuterClass {
  private static String name = "outer";
  private int num = 10;
  public static class InnerClass {
    public void print() {
      System.out.println("In InnerClass print method, name is " + name);
    }
  }
  public static void main(String[] args) {
    OuterClass.InnerClass inner = new OuterClass.InnerClass();
    inner.print(); // 输出:In InnerClass print method, name is outer
  }
}

在静态内部类中可以使用外部类的静态成员变量和方法,而不能使用非静态成员变量和方法。使用方式为:外部类名.内部类名 内部类对象 = new 外部类名.内部类名();

3.局部内部类:定义在方法或作用域内的类。

public class OuterClass {
  public void display() {
    class InnerClass {
      public void print() {
        System.out.println("In InnerClass print method");
      }
    }
    InnerClass inner = new InnerClass();
    inner.print(); // 输出:In InnerClass print method
  }
  public static void main(String[] args) {
    OuterClass outer = new OuterClass();
    outer.display();
  }
}

在方法或作用域内定义的局部内部类,只能在该方法或作用域中使用,使用方式为:直接调用内部类对象的方法。

Java内部类的应用场景:

1.将内部类定义为私有类,可以避免其他类访问该类,增加安全性。

2.可以在内部类中访问外部类的私有变量和方法,可以方便地实现某些复杂算法。

3.可以将同一类型的不同内部类封装成外部类的同一方法,使得代码更加简洁。

三个

  
  

评论区

请求出错了