Coding/Java

Java Modifier(제어자)

heyoon2j 2020. 9. 16. 17:16

■ Java Modifier(제어자)

- 클래스, 변수, 메소드에 부가 기능을 부여하는 키워드

 

1. 접근 제어자 (Access Modifiers)

 - 접근할 수 있는 범위를 정하는 제어자

 - private : Class 안에서만 사용 가능

 - default : 같은 Package 내에서 사용 가능

 - protecte : 같은 Package 또는 다른 Package에 속한 자식 클래스에서 사용 가능

 - public : 전체에서 사용 가능

 * Class는 private와 public만 가능

 

• 기본 Package

package PackageA;

public class ClassA {
    public int x;
    protected int y;
    int z;  // default (=package)
    private int w;

    public void methodA(){

    }
    protected void methodB(){}
    void methodC() {}   // default (=package)
    private void  methodD(){}   // 내부 구현을 위해서만 쓰인다.

    public void methodTest(){
        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println(w);

        methodA();
        methodB();
        methodC();
        methodD();
    }
}

class ClassTest{
    public static void main(String[] args) {
        ClassA obj = new ClassA();
        System.out.println(obj.x);  // public
        System.out.println(obj.y);  // protected
        System.out.println(obj.z);  // default
//        System.out.println(obj.w);// private

        obj.methodA();  // public
        obj.methodB();  // protected
        obj.methodC();  // default
//        obj.methodD();// private
    }
}

 

• 다른 Package

import PackageA.ClassA;

class AA extends ClassA {

    public void methodTest(){
        System.out.println(x);  // public
        System.out.println(y);  // protected, 자식이면 다른패키지여도 가능하다.
//        System.out.println(z);  // default
//        System.out.println(w);  // private

        methodA();  // public
        methodB();  // protected
//        methodC();  // default
//        methodD();  // private
    }
}

public class ClassB {
    public static void main(String[] args) {
        ClassA obj = new ClassA();
        System.out.println(obj.x);  // public
//        System.out.println(obj.y);    // protected는 다른 패키지인 경우 자식만 된다.
//        System.out.println(obj.z);    // default는 다른 패키지면 안된다.
//        System.out.println(obj.w);    // private

        obj.methodA();
//        obj.methodB();    // protected는 다른 패키지인 경우 자식만 된다.
//        obj.methodC();    // default는 다른 패지면 안된다.
//        obj.methodD();    // private
    }
}

 


2. 그 외 제어자 (Other Modifiers)

 - 특별한 기능을 부여하는 제어자

 

 

• final 키워드

- 더 이상 바뀔 수 없음을 의미

- 클래스 : 더 이상 상속 불가

- 메소드 : 자식 클래스에서 Override 할 수 없다.

- 변수 : 변수의 값이 초기화된 이후에 변하지 않는다.

  * 생성자에서 초기화가 이루어지는 것을 black final이라고 한다.

public class Foo {
    final int x = 0;	// final variable
    final int y;		// blank finial variable

    public Foo(int y) {
      this.y = y;		// blank final variable initialization
  }

}

 

• static 키워드

- 클래스 변수, 클래스 메소드 등을 선언하기 위해 사용

- 클래스를 로드할 때 메모리에 올라가게 된다.

 

• abstract 키워드

- 추상 클래스에서 사용

 

• synchronized 키워드

- 동시성 프로그래밍에서 사용(Multi-Thread)

 

 

 

'Coding > Java' 카테고리의 다른 글

Java Abstract Class & Interface  (0) 2020.09.17
Java Polymorphism(다형성)  (0) 2020.09.17
Java Inheritance(상속)  (0) 2020.09.16
JavaDoc 만드는 방법  (0) 2020.09.16
Java Class(클래스)  (0) 2020.09.16