JAVA 内部类

一、静态内部类:

  1.访问内部静态类时,不需要实例化外部类。

public class Outer {
    static class Inner {
    }
}
class OtherClass {
    Outer.Inner oi = new Outer.Inner();
}

  2.静态内部类中可以定义静态成员和实例成员。(变量、方法)

  :外部类以外的其他类需要通过完整的类名访问静态内部类中的静态成员,如果要访问静态内部类中的实例成员,则需要通过静态内部类的实例。

复制代码
public class Outer {
    static class Inner {
        int a = 0;    // 实例变量a
        static int b = 0;    // 静态变量 b
    }
}
class OtherClass {
    Outer.Inner oi = new Outer.Inner();
    int a2 = oi.a;    // 访问实例成员,通过静态内部类的实例访问
    int b2 = Outer.Inner.b;    // 访问静态成员,以完整类名访问
}
复制代码

  3.静态内部类可以直接访问外部类的静态成员,如果要访问外部类的实例成员,则需要通过外部类的实例去访问。

复制代码
public class Outer {
    int a = 0;    // 实例变量
    static int b = 0;    // 静态变量
    static class Inner {
        Outer o = new Outer;
        int a2 = o.a;    // 访问实例变量,通过实例访问
        int b2 = b;    // 访问静态变量,直接访问
    }
}
复制代码

 

二、非静态内部类(内部实例类)

  (1)外部类的静态方法+外部类以外的类访问内部实例类需要从外部类依次实例化。(如Outer.Inner i = new Outer().new Inner())。

  (2)内部实例类可以任意访问外部类的所有成员。(包括嵌套类)
  (3)在外部类中不能直接访问内部类的成员,而必须通过内部类的实例去访问。如果类 A 包含内部类 B,类 B 中包含内部类 C,则在类 A 中不能直接访问类 C,而应该通过类 B 的实例去访问类 C。
  (4)在实例内部类中不能定义 static 成员。

posted @   湘summer  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示