Java静态嵌套类
1 什么是Java静态嵌套类
在类中创建的静态类即静态嵌套类在Java中称为静态嵌套类。静态嵌套类无法访问非静态成员和方法。可以通过外部类的名称访问。
- 静态嵌套类可以访问外部类(包括私有)的静态成员。
- 静态嵌套类无法访问非静态(实例)成员或方法。
2 包含成员方法静态嵌套类的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 包含成员方法静态嵌套类的例子
*/
class Demo{
static int data=30;
static class Inner{
void msg(){System.out.println("data变量为:"+data);}
}
public static void main(String args[]){
Demo.Inner obj=new Demo.Inner();
obj.msg();
}
}
输出结果为:
data变量为:30
在上面示例中,您需要创建静态嵌套类的实例,因为它具有实例方法msg()。但是您无需创建Outer类的对象,因为嵌套类是静态的,并且静态属性,方法或类都可以在没有对象的情况下进行访问。
3 Java嵌套内部类的工作原理
嵌套内部类被反编译后的源码为:
import java.io.PrintStream;
static class TestOuter1$Inner
{
TestOuter1$Inner(){}
void msg(){
System.out.println((new StringBuilder()).append("data is ")
.append(TestOuter1.data).toString());
}
}
4 包含静态方法静态嵌套类的例子
如果您在静态嵌套类中包含静态成员,则无需创建静态嵌套类的实例。
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 包含静态方法静态嵌套类的例子
*/
class Demo{
static int data=30;
static class Inner{
static void msg(){System.out.println("data变量为: "+data);}
}
public static void main(String args[]){
Demo.Inner.msg();//无需创建静态嵌套类的实例
}
}
输出结果为:
data变量为: 30
热门文章
优秀文章