Java内部类

简介: Java内部类

内部类可以分为以下四种

**

成员内部类:直接定义在类当中的一个类,在类前面没有任何一个修饰符。

局部内部类:定义在方法里的内部类。

匿名内部类:属于局部内部的一种特殊情况。

静态内部类:在内部类前面加上一个static。

**


1.成员内部类

public class Outer {
  int num = 10;
  //外部成员方法
  public void outMethod() {
    System.out.println("外部成员方法");
  }
  //成员内部类
  class Inner{
    int num = 20;
    //内部类的成员方法
    public void innerMethod() {
      System.out.println("内部成员方法");
      System.out.println(num);//内部类的Num
      System.out.println(Outer.this.num);//外部num
      outMethod();
    }
  }
}
//测试类
public class Test {
  public static void main(String[] args) {
    //访问内部类方法
    Outer.Inner in = new Outer().new Inner();
    in.innerMethod();
    //访问外部类方法
    Outer out = new Outer();
    out.outMethod();
  }
}

2.局部内部类

class Outers {
  // 外部成员变量
  int num = 10;
  // 外部成员方法
  public void outerMethod() {
    System.out.println("外部成员方法");
  }
  public void function() {
    // 局部内部类
    class Inner {
      int num = 20;
      public void innerMethod() {
        System.out.println("内部类成员方法");
        // 访问外部成员
        System.out.println(Outers.this.num);
        outerMethod();
      }
    }
    // 访问内部类变量
    Inner i = new Inner();
    System.out.println(i.num);
    i.innerMethod();// 访问局部方法
  }
}
//测试类
class Tests {
  public static void main(String[] args) {
    // 访问内部类对象
    Outers o = new Outers();
    o.function();
  }
}

3. 静态内部类

创建对象格式:

外部类名.内部类名 对象名 = new 外部类名.内部类名();

特点:

静态内部类里访问静态变量不需要实例化

class Outer{
  static int outer=4;//静态变量
  //静态内部类
  static class Inner{
    int inner = 20;
    public void innerMethod() {
      System.out.println("内部类的成员变量"+inner);
      //静态内部类里访问静态变量不需要实例化
      System.out.println("外部类的成员变量"+outer);
    }
  }
}
//测试类
public class Test {
  public static void main(String[] args) {
    Outer.Inner oi = new Outer.Inner();
    oi.innerMethod();
  }
}

4.匿名内部类

格式:new 类名/接口名(){};

public abstract class Animal {
  //抽象方法
  abstract void eat();
}
//测试类
public class Test {
  public static void main(String[] args) {
    Animal o = new Animal() {
      @Override
      void eat() {
        System.out.println("吃肉");
      }
    };
    o.eat();
  }
}
目录
相关文章
|
18天前
|
Java
java中,剩下的这两个内部类不太好理解!
java中,剩下的这两个内部类不太好理解!
17 0
|
18天前
|
Java 编译器
java中常见的几种内部类,你会几个?(未完)
java中常见的几种内部类,你会几个?(未完)
17 1
|
2天前
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
7 1
|
4天前
|
Java
【Java探索之旅】内部类 静态、实例、局部、匿名内部类全面解析
【Java探索之旅】内部类 静态、实例、局部、匿名内部类全面解析
5 0
|
5天前
|
Java
一篇文章理解 Java 内部类
一篇文章理解 Java 内部类
|
9天前
|
Java
一文搞懂内部类(Java)
Java内部类包括成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类能访问外部类的所有成员,可以通过外部类实例创建。静态内部类与外部类实例无关,可直接访问外部类的静态成员。局部内部类仅限方法内使用,能访问最终变量。匿名内部类无名称,常用于一次性实现接口或抽象类,需外部类成员为final。
8 1
|
9天前
|
Java
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
11 3
|
10天前
|
设计模式 Java 开发者
Java的内部类
Java的内部类
6 0
|
10天前
|
存储 Java API
【JAVA学习之路 | 提高篇】[内部类与常见API]String类
【JAVA学习之路 | 提高篇】[内部类与常见API]String类
|
18天前
|
Java
Java一分钟之-Java内部类与匿名类
【5月更文挑战第12天】本文介绍了Java的内部类和匿名类,包括成员内部类和局部内部类,以及匿名类的一次性子类实现。通过代码示例展示了它们的使用方法,同时提到了常见问题和易错点,如混淆内部类与嵌套类、匿名类的生命周期管理及内部类的访问权限,并给出了相应的避免策略。理解这些概念有助于提升代码质量。
17 3