该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
4静态内部类(Static Inner Classes)
马克-to-win:这里的内部类的static,意思是它可以不用实例化外部类,就自己单独被实例化,单独存在,静态方法不就不用实例化类,直接用吗?
重要语法:马克-to-win:1)静态内部类里的任何方法(静态或非静态)不允许访问外层类里的实例属性或方法。(因为外层类本身可能没有被实例化),2)静态属性和方法无论在外层类还是静态内部类, 都可以被任意调用(对方或自己或测试类)。
例2.4
class ShellMark_to_win {
static int i ;
private int k;
static class Core {
static int m ;
int j;
public Core(int j) {
i = 2;//可以直接访问外层类的静态域
m=3;
//k=9;//马克-to-win:compile error,static class can not refer to anon-staticfield,因为静态内部类可以脱离外层实例而单独存在,静态内部类可能已经被实例化,而外层类没有被实例化,外层的实例变量就不能被访问。像原来的静态方法似的,不能访问实例变量
this.j = j;
}
public String toString()
{
//ShellMark_to_win.changTopValue();//可以访问外层类的静态方法
//insMethod();//不能从静态类里访问外层类的实例方法。
return "j=" + j + ";i=" + i+" ;m="+m;// 马克-to-win:这里不能写+k,因为compileerror,static class can not refer to a non-staticfield,像原来的静态方法似的,不能访问实例变量
}
static int changValue()
{ //insMethod();//不能从静态类里访问实例方法。
m=m+2;
i=i+2;
//k=9;//马克-to-win:这里不能写+k,因为compile error,static class can not refer to a non-static field,像原来的静态方法似的,不能访问实例变量
。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner4_web.html#WhatIsStaticInnerClass