해당 포스팅은 '자바의 정석 기초편'을 보고 작성되었습니다.
static, final, abstact를 제외하고 잘 사용되지 않으므로 우선 접근제어자와 그 외 3가지에 대해 짚고 넘어갈 것이다
인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스 변수(static 멤버변수)는 인스턴스에 관게없이 같은 값을 가짐 👉🏼 WHY? 하나의 변수를 모든 인스턴스가 공유하기 때문!!!
즉, static이 붙은 멤버변수와 메서드, 그리고 초기화 블럭은 인스턴스가 아닌 클래스에 관게된 것이기 때문에 인스턴스를 생성하지 않고도 사용이 가능하다.
static이 사용될 수 있는곳? 멤버변수, 메서드, 초기화 블럭
변수에 사용되면 값을 변경할 수 없는 상수가 되고,
메서드에 사용되면 오버라이딩을 할 수 없게 되고,
클래스에 사용되면 자신을 확장하는 자손클래스를 정의하지 못하는 것!
final이 사용될 수 있는곳? 지역변수, 멤버변수, 메서드, 초기화 블럭
추상화는 말그대로 미완성된 것
메서드의 선언부만 작성하고 실제 수행내용은 구현하지 않은 추상메서드를 선언하는데 사용됨.
클래스 내에 추상 메서드가 선언되었음을 의미
그리고 당연히 추상 클래스는 아직 완성되지 않은 메서드가 존재하는 것이므로 인스턴스 생성은 불가하다.
멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.
접근 제어자가 사용될 수 있는곳? 클래스, 멤버 변수, 메서드, 생성자
제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전 체 |
---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | |
(default) | O | O | ||
private | O |
접근제어자에 대해 간단하게 알아보았다. 다음 포스팅에서는 빠질 수 없는 캡슐화와 함께 접근 제어자를 다루어 볼 것이다.