欢迎光临
我们一直在努力

Java 静态内部类

目录

  • 1. 静态内部类
  • 2. 获取静态内部类对象
  • 3. 静态内部类只能访问外部类的静态成员
  • 4. 成员内部类 vs 静态内部类

1. 静态内部类

  静态内部类:被static 修饰的内部类

class OutClass{

int a;
private int b;
public static int c;

public void print(){
System.out.println("OutClass");
}
//静态内部类
static class InnerClass{
int a;
int d;
private int e;
public void print(){
System.out.println("InnerClass");
}
}
}

2. 获取静态内部类对象

  静态内部类的创建不需要外部类对象

public static void main(String[] args) {
OutClass.InnerClass in = new OutClass.InnerClass();
}

3. 静态内部类只能访问外部类的静态成员

Error❌:

class OutClass{
int a = 10;
class InnerClass{
System.out.println(a);
}
}

 静态成员成员都是在加载类的时候就创建好的 , 非静态成员依赖对象的创建 , 因为静态内部类需要不外部类对象就可以  创建,没有外部类对象,所以只能也访问静态成员。

class OutClass{

int a = 1;
private int b = 2;
public static int c = 3;

public void print(){
System.out.println("OutClass");
}
static class InnerClass{
int d = 4;
int e = 5;
private int f = 6;
public void print(){
System.out.println("InnerClass");
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
}
}

但也不是完全不能访问,在静态内部类中创建个外部类对象,通过对象.成员名访问。

class OutClass{

int a = 1;
private int b = 2;
public static int c = 3;

public void print(){
System.out.println("OutClass");
}
static class InnerClass{
public void print(){
System.out.println("InnerClass");
OutClass out = new OutClass();
System.out.println(out.a);
System.out.println(out.b);
System.out.println(c);
}
}
}

4. 成员内部类 vs 静态内部类

成员内部类静态内部类
修饰 无 static static
属于 外部类对象 外部类
创建 out.new Inner() new OutClass.Inner()
是否需要外部对象 需要 不需要
能访问外部实例变量
能访问外部静态变量
能定义 static 成员 ❌(常量除外)
赞(0)
未经允许不得转载:171主机测评 » Java 静态内部类
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址