여니의 프로그래밍 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을 추가하여

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

 

 

 


참고 출처 : 자바의 정석