본문 바로가기

Language/Java

[Java] 기타 제어자

static

'공통적인'이라는 의미이다.

 

변수에 사용하면 해당 변수를 클래스 공통 변수로 만든다.

내부 클래스에 사용하면 해당 클래스를 정적 내부 공통 클래스로 만든다.

메소드에 사용하면 해당 메소드를 클래스 공통 메소드로 만든다.

 

1. 클래스가 메모리에 올라갈 때 단 한번만 생성되고 초기화된다.

2. 인스턴스를 생성하지 않고도 바로 사용할 수 있다.

3. 해당 클래스의 모든 인스턴스가 공유된다.

 

 

final

'변경할 수 없다'라는 의미이다.

 

필드나 지역변수에 사용하면 값을 변경할 수 없는 상수가 된다.

클래스에 사용하면 해당 클래스는 다른 클래스가 상속받을 수 없다.(확장할 수 없다.)

메서드에 사용하면 해당 메서드는 오버라이딩을 통해 재정의 할 수 없다.

 

 

abstract

 '추상적인'이라는 의미이다.

 

선언부만 있고, 구현부가 없는 메소드/클래스이다.

 

제어자의 조합

클래스에 final과 abstract는 함께 사용할 수 없다.

final 제어자를 가진 클래스는 다른 클래스가 상속 받을 수 없게 되며, abstract 제어자를 가진 클래스는 다른 클래스가 상속 받아 오버라이딩 해야만 사용할 수 있으므로 같이 사용할 수 없다.

 

메소드에 static과 abstract는 함께 사용할 수 없다.

abstract 제어자를 가진 메소드는 선언부만 있고 구현부가 없는 메소드인데, static 제어자를 가진 메소드는 인스턴스 생성 없이 바로 사용할 수 있어야 하므로 두 제어자는 같이 사용할 수 없다.

 

메소드에 private과 abstract는 함께 사용할 수 없다.

abstract 제어자를 가진 메소드는 다른 클래스가 상속하여 오버라이딩을 통해 구현하을 해야하지만, private 제어자리를 가진 메소드는 자식 클래스에서 접근할 수 없으므로 함께 사용할 수 없다.

 

메소드에 final 과 private을 같이 사용할 필요가 없다.

두 제어자 모두 해당 메소드가 오버라이딩을 통해 재정의를 할 수 없다는 의미를 가지므로 둘 중 하나만 사용해도 무방하다.

 

참고 : http://www.tcpschool.com/java/java_modifier_ectModifier

 

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

[Java] Collection 프레임워크  (0) 2023.05.15
[Java/ERROR] ConcurrentModificationException  (0) 2022.12.09
[Java] Object 클래스 메소드 - toString()  (0) 2022.11.07
[Java] Object 클래스  (0) 2022.11.07
[Java] this 키워드  (0) 2022.11.04