Language/Java

4.5 객체 지향 프로그래밍 (제어자)

리져니 2021. 7. 9. 21:54

제어자

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

 

static

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

static 멤버변수 - 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 됨
- 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능
- 클래스가 메모리에 로드될때 생성
메서드 - 인스턴스를 생성하지 않고도 호출이 가능
- static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없음

 

final

'마지막의' 또는 '변경될 수 없는'의 의미

final 클래스 변경될 수 없는, 확장할 수 없는 클래스
fianl로 지정된 클래스는 다른 클래스의 조상이 될수 없음
메서드 변경될 수 없는 메서드
final로 지정된 메서드는 오버라이딩을 통해 재정의될 수 없음
멤버변수 fianl로 지정된 변수는 값을 변경할 수 없는 상수가 됨
지역변수

 

abstract

'미완성'의 의미

메서드의 선언부만 작성하고 실제 수행내용은 구현하지 않은 추상 메서드를 선언하는데 사용됨

abstract 클래스 클래스 내에 추상 메서드가 선언되어 있음을 의미
메서드 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알림

* 추상 클래스는 미완성 메서드가 존재하므로 인스턴스를 생성할 수 없다.

  클래스 자체는 쓸모가 없지만, 다른 클래스가 이 클래스를 상속받아서 일부의 원하는 메서드만 오버라이딩 해도 된다는 장점이 있다.

 

* 추상 클래스(abstract class)

완성되지 않은 메서드(추상 메서드)를 포함하고 있는 클래스.

추상 클래스에서 메서드의 선언부만 작성하고 구현부는 미완성으로 남겨 둠으로써 그 이후에 상속 받는 자손 클래스의 용도에 따라 메서드를 다르게 구현하기 위한 것.

 

 

 

접근 제어자

private 같은 클래스 내에서만 접근 가능
default 같은 패키지 내에서만 접근 가능
protected 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능
public 접근 제한이 전혀 없음

사용 이유(= 캡슐화)

클래스의 내부에 선언된 데이터를 보호하기 위해.

클래스 내부의 작업을 위해 임시로 사용되는 멤버변수나 부분작업을 처리하기 위한 메서드 등의 멤버들을 클래스 내부에 감추기 위해.

 

1. 메서드에 static과 abstract를 함께 사용할 수 없다.

2. 클래스에 abstract와 final을 동시에 사용할 수 없다.

3. abstract메서드의 접근 제어자가 private일 수 없다.

4. 메서드에 private과 final을 같이 사용할 필요는 없다.

 

 

 

728x90