본문 바로가기

JavaCode(review)

Scope 개념 코딩

반응형

Scope은 {    } 내에서

 

 

Scope Class

package my.gabin.com;

public class Scope {

    public int publicVar = 0;
    private int privateVar = 1;

    //constructor

    public Scope() {
        System.out.println("Scope, publicVar = "+publicVar +". privateVar = "+ privateVar);
    }

    //getter

    public int getPrivateVar() {        //private은 getter이용해서 main에 불러올수 있다.
        return privateVar;
    }

    public void timesTwo(){
        int privateVar = 2;
        for(int i = 0; i<10; i++){
            System.out.println(i+" times tow is "+ i*privateVar);
        }
    }

    //Inner class
    public class InnerClass {
        public int privateVar = 3;

        //constructor
        public InnerClass() {
            System.out.println("InnerClass privateVar = "+privateVar);
            System.out.println("InnerClass privateVar = "+this.privateVar); //innerClass 값
            System.out.println("OuterClass privateVar = "+Scope.this.privateVar);//OuterClass 값
        }

        public void timesTwo(){
           int privateVar = 2;
            for(int i = 0; i<10; i++){
                System.out.println(i+" times tow is "+ i*privateVar);
            }
        }
    }
}


Main Class

package my.gabin.com;

public class Main {

    public static void main(String[] args) {
        String privateVar1 = "this is private to main()";


        Scope scope = new Scope();      //object , call constructor
        System.out.println("ScopeInstance privateVar is "+scope.getPrivateVar());
        System.out.println(privateVar1);

        scope.timesTwo();

        System.out.println("*********************************");
        Scope.InnerClass innerObject = scope.new InnerClass();  //object, call constructor

        innerObject.timesTwo();
    }
}


Output

D:\IT\JDK\jdk11.0.6_10\bin\java.exe "-javaagent:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\lib\idea_rt.jar=50274:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\IT\NewProject\ScopeCheck\out\production\ScopeCheck my.gabin.com.Main
Scope, publicVar = 0. privateVar = 1			// call constructor
ScopeInstance privateVar is 1				
this is private to main()
0 times tow is 0
1 times tow is 2
2 times tow is 4
3 times tow is 6
4 times tow is 8
5 times tow is 10
6 times tow is 12
7 times tow is 14
8 times tow is 16
9 times tow is 18
*********************************
InnerClass privateVar = 3				//call innerClass constructor // privateVar
InnerClass privateVar = 3				//this.privateVar
OuterClass privateVar = 1				//Scope.this.privateVar
0 times tow is 0						//InnerClass method
1 times tow is 2
2 times tow is 4
3 times tow is 6
4 times tow is 8
5 times tow is 10
6 times tow is 12
7 times tow is 14
8 times tow is 16
9 times tow is 18

Process finished with exit code 0