??????Java?У?????????????????????????????????????????????????.this??????????????????????????????????????????г????????private?????

??????????????????????????????????????????????????????????????????????????????????????????????????????????η???????????????????????????????

????????????????????Out.java?????а?????4??????????????????private??default??protected??public???????????????У???????4???????????????????????????Out???????????????????????

????Out.java

package com.zj.main;
 
public class Out {
    public PrivateIn getPrivateIn(){
       return new PrivateIn();
    }
  
    public DefaultIn getDefaultIn(){
       return new DefaultIn();
    }
  
    public ProtectedIn getProtectedIn(){
       return new ProtectedIn();
    }
  
    public PublicIn getPublicIn(){
       return new PublicIn();
    }
  
    private class PrivateIn implements InMethod{
       private int private_arg;
       int default_arg;
       protected int protected_arg;
       public int public_arg;
     
       private void private_method(){};
       void default_method(){};
       protected void protected_method(){};
       public void public_method(){};
    }
  
    class DefaultIn implements InMethod{
       private int private_arg;
       int default_arg;
       protected int protected_arg;
       public int public_arg;
     
       private void private_method(){};
       void default_method(){};
       protected void protected_method(){};
       public void public_method(){};
    }
  
    protected class ProtectedIn implements InMethod{
       private int private_arg;
       int default_arg;
       protected int protected_arg;
       public int public_arg;
     
       private void private_method(){};
       void default_method(){};
       protected void protected_method(){};
       public void public_method(){};
    }
  
    public class PublicIn implements InMethod{
       private int private_arg;
       int default_arg;
       protected int protected_arg;
       public int public_arg;
     
       private void private_method(){};
       void default_method(){};
       protected void protected_method(){};
       public void public_method(){};
    }
 
    public static void main(String[] args){
       //create an outer object
       Out out=new Out();
     
       //create a private inner object by 'new'
       Out.PrivateIn privateIn=out.new PrivateIn();
       privateIn.private_arg=0;
       privateIn.private_method();
     
       // create a private inner object  by 'out's method'
       Out.PrivateIn privateIn2 = out.getPrivateIn();
       privateIn2.private_arg = 0;
       privateIn2.private_method();
    }
}

???????е?4??????????????????InMethod???y??????????????л??????????????????????????????????????????????????????