问题描述
publicclassCheckData{privateinti=900;classa{a(inti){System.out.println("mmmm"+i);}publicvoidaa(){System.out.println("第一个内部类"+i);nn();}publicCheckDatagetCheckData(){returnCheckData.this;}}publicstaticclassb{privateintj=911;b(){System.out.println("mm");}publicvoidbb(){System.out.println("第二个内部类"+j);}}publicageta(){returnnewa(1);}publicstaticbgetb(){returnnewb();}publicintnn(){System.out.println("ooooooooooo");return0;}publicstaticvoidmain(String[]args){CheckDatac=newCheckData();CheckData.amm=c.newa(1);//CheckData.bm=c.newb();为什么不可以这样创建对象mm.aa();CheckData.aaa=c.geta();aa.aa();aa.getCheckData().nn();//aa.nn();CheckData.getb().bb();c.getb().bb();}}
解决方案
解决方案二:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();
解决方案三:
引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();
我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???
解决方案四:
引用2楼u014466305的回复:
Quote: 引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???
我是这么理解的,静态是归属于类的,非static才是属于具体的对象,那么调用静态类的时候就不能用某个对象点了
解决方案五:
引用3楼shixitong的回复:
Quote: 引用2楼u014466305的回复:
Quote: 引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???
我是这么理解的,静态是归属于类的,非static才是属于具体的对象,那么调用静态类的时候就不能用某个对象点了
静态是归属于类的,非Static才是具体的对象???没有明白什么意思
解决方案六:
引用4楼u014466305的回复:
Quote: 引用3楼shixitong的回复:
Quote: 引用2楼u014466305的回复:
Quote: 引用1楼shixitong的回复:
CheckData.bm=c.newb();为什么不可以这样创建对象改为CheckData.bm=newCheckData.b();我知道可以这样定义,我只是想问//CheckData.bm=c.newb();为什么不可以这样创建对象因为CheckData.amm=c.newa(1);可以这样定义,只是因为b为静态类就不可以这样定义了,这是为什么???
我是这么理解的,静态是归属于类的,非static才是属于具体的对象,那么调用静态类的时候就不能用某个对象点了
静态是归属于类的,非Static才是具体的对象???没有明白什么意思
这好比如方法的调用的时候,静态方法用类直接调用,而非静态方法用类new出来的对象来调用。
解决方案七:
"静态"的意思就是“只有一个”,只要你看懂这句,后面都是废话一般直接调用类名.成员,动态则是对象名.成员比如Integer.ParseInt因为是静态所以用类名你静态类说明只有一个,是不需要对象的,因为我没为静态类创建过对象,所以不知道是不是静态类不能创建对象,一般是无意义的。比如韦小宝有N个老婆,那么就是老婆名.成员属性,如果你的是静态的,那么就是老婆.成员属性开玩笑的
解决方案八:
静态成员的意思是比如ClassTeam下有ClassMember,如果整个队伍一起移动的,也就是每个memer的city都一样的,那么就要用到静态那么每个member的city都指向同一个,可以用staticcitymember1.city="Nankin";之后,所有member的city就都是“Nankin”,其实是公用同一个地址这就是静态成员变量静态类也是同样理解的。在其他高手给出更好的解答之前,你可以看下我的解答。