对内部类及外部类的一些测试体会

package j2se.basicKnowledge.exercises;

public class InnerClassTest {
    static int i=10;
    int i1 = 1;
   
    static class StaticInnerClass{
        int staticInnerVar = 1; //‘静态内部类’中可以有‘非’静态的成员
        static int staticInnerVar1=9;
       
        public void staticInnermethod(){
            i++;
            //i1++;//k为非静态成员,在静态内部类中不能直接用this.i1使用,故此处会报错!但可以像下面那样来使用。
            InnerClassTest is = new InnerClassTest();
            is.i1++;
        }       
    }
   
    class NotStaticInnerClass{
        int notStaticInnerVar=2;
        //static int notStaticInnerVar1=3;  //非静态内部类中'不能'有'静态成员',故这里会有错!
       
        public void notStaticInnerMethod(){
            /*在‘非静态内部类’的‘非静态方法’中可以‘直接使用’外部类的‘非静态成员’和‘静态成员’*/
            i++;
            i1++; 
        }
    }
   
    //非静态方法中建立非静态内部类和静态内部类实例的步骤:一样的,都是直接new他们的实例对象,而‘不用’先new外部类的对象
    public void notStaticMethod(){
       
        //建立静态内部类实例
        StaticInnerClass ic = new StaticInnerClass();
       
        //建立非静态内部类实例
        NotStaticInnerClass nic = new NotStaticInnerClass();
    }
   
    //静态方法中建立非静态内部类和静态内部类实例的步骤:有区别的
    public static void main(String [] args){
       
        //建立非静态内部类实例:先new外部类实例,再用“外部类名.内部类名 = 外部类实例.new 内部类()”的方法
        InnerClassTest ict = new InnerClassTest();
        InnerClassTest.NotStaticInnerClass nsic = ict.new NotStaticInnerClass();
       
        //建立静态内部类实例:直接’外部类名.静态内部类名 var = new 外部类名.静态内部类名()‘的方式   
        InnerClassTest.StaticInnerClass sic = new InnerClassTest.StaticInnerClass();
       
        //引用静态内部类的静态成员方式:
        int l = InnerClassTest.StaticInnerClass.staticInnerVar1;
       
        //引用静态内部类的非静态静态成员方式:
        int l1 = sic.staticInnerVar;
    }
}

 

 

package j2se.basicKnowledge.exercises;
/*静态内部类在无论是在static方法中还是在非static的方法中都可以直接new自己的实例对象;而不用先new外部类*/

public class OutClass {

    private static class InterClass {
        public InterClass() {
            System.out.println("InterClass Create");
        }
    }

    public OutClass() {
        InterClass ic = new InterClass();
        System.out.println("OuterClass Create");
    }

    public void aa() {
        InterClass ic = new InterClass();
    }
   
    public static void main(String[] args) {
        InterClass ic = new InterClass();
        OutClass oc = new OutClass();
        oc.aa();
    }
}

 

你可能感兴趣的:(String,测试,Class)