여니의 프로그래밍 study/Java

[Java] 제어자

여니's 2022. 7. 30. 22:06

목차

     

     


    제어자

    : 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여함

     

    접근 제어자 public, protected, default, private
    그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp

     

    static

    : '클래스의' 또는 '공통적인'의 의미를 가지고 있다.

    클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다.

     

     

    final

    : '마지막의' 또는 '변경될 수 없는'의 의미를 가지고 있다.

    변수에 사용되면 값을 변경할 수 없는 상수가 된다.

    대표적인 final 클래스로는 String과 Math가 있다.

     

     

    abstract

    : '미완성'의 의미를 가지고 있다.

    메서드의 선언부만 작성하고

    실제 수행내용은 구현하지 않은 추상 메서드를 선언하는 데 사용된다.

     


    접근 제어자

    : 멤버 또는 클래스에 사용되어,

    해당ㅇ하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.

     

    접근 제어자를 사용하는 이유

    > 외부로부터 데이터를 보호하기 위해

    > 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해

     

    제어자 같은 클래스 같은 패키지 자손클래스 전체
    public o o o o
    protected o o o  
    default o o    
    private o      

    class Singleton {
    	...
        private static Singleton s= new Singleton();
        private Singleton(){
        	....
        }
        
        // 인스턴스를 생성하지 않고도 호출을 해야하므로 static이어야 함.
        public static Singleton getInstance(){
       		return s;
        }

     

    생성자가 private인 클래스는 다른 클래스의 조상이 될 수 없다.

    자손 클래스의 인스턴스 생성시

    조상 클래스의 생성자를 호출해야 하는데

    private이면 자손 클래스에서 호출이 불가능하다.

     

    따라서 클래스 앞에 final을 추가하여

    상속할 수 없는 클래스임을 나타내는 것이 좋다.

     

     

     


    참고 출처 : 자바의 정석