21xrx.com
2024-12-23 05:36:04 Monday
登录
文章检索 我的文章 写文章
Java内部类的定义方式及应用场景
2023-06-14 06:10:26 深夜i     --     --
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.可以将同一类型的不同内部类封装成外部类的同一方法,使得代码更加简洁。

三个

  
  

评论区

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