/*
Online Java - IDE, Code Editor, Compiler

Online Java is a quick and easy tool that helps you to build, compile, test your programs online.
*/

// I have found this code as part of my WhizLabs learning.
//It is slightly overwhelming as to 

public class OuterClass {
    
    private static String name ="amit";
    private String nameAgain ="amit1";
    
    public class InnerClass
    {
        private static final String name1 = "amit2";
        private String nameAgain1="amit3";
        
        public void test()
        {
            OuterClass oc= new OuterClass();
            System.out.println(oc.nameAgain); // to access a non-static member via object reference of type OuterClass
            
             //***DIFFICULTY UNDERSTANDING PRINCIPLE***********************8
            System.out.println(OuterClass.this.nameAgain); // to access a static member, this is ok
            //*****************************************
            
            System.out.println(OuterClass.name); // to access a static member, this is ok
            
            
            System.out.println(name1); //access a non-static member of the inner class
            System.out.println(nameAgain1); //access a static member of the inner class
        }
    }
    
    public static void main(String[] args) {
        System.out.println("Welcome to Online IDE!! Happy Coding :)");
        
        OuterClass.InnerClass ic = new OuterClass().new InnerClass();
        ic.test();
    }
}