静态方法是优先于对象先存在的,当静态方法访问非静态成员时,那些非静态成员的对象都不存在,那些成员更不可能调用。- class Person{
- public String name;
-
- public static void show(){
-
- /*
- 静态方法优先于对象先存在,在执行show()这个方法的时候很有可能这个对象还不存在
- 所以这个this就没有任何的意思,编译的时候直接报错
- */
- System.out.println(this.name);
- this.menthod();
- }
- public void menthod(){
-
- }
- }
复制代码 但是这个代码,跟你说的情况不一样,首先已经先创建了外部类对象,对于静态内部类而言这个this已经存在。再者在这个静态内部类中并没有调用非静态成员。- Innerclass ic=new Outclass().new Innerclass();
复制代码 现在唯一能说的通的解释就是20楼所说的情况,这个情况记住就行了。因为这规则就是这样没有为什么。就好像为什么红灯停绿灯行,这就是规则
|