클래스 Modifier
•
접근 권한과 Modifier를 지정하지 않으면, 같은 패키지 내의 클래스에서만 접근이 가능하다
•
서로 다른 패키지의 클래스에 접근하기 위해서는 public으로 지정해야한다.
접근 제한자(Access Modifier)
•
접근 제한자란 클래스, 변수, 메서드에 접근할 수 있는 권한을 나타내기 위해 사용된다.
•
접근 관련 modifier를 통해 정보 은닉(Information Hiding)을 구현할 수 있다.
클래스와 final
•
클래스를 선언할 때 클래스 앞에 final 예약어를 추가하면 상속을 금지하는 의미이다.
변수 Modifier
•
변수에 대한 접근 권한이나 활용 방법 제어
•
modifier 미지정 시 같은 패키지 내의 클래스에만 접근이 가능한 객체 변수라는 의미를 가짐
Static 변수 (클래스 변수)
•
모든 인스턴스에서 공통된 값을 가지는 변수의 경우에는 멤버 변수(인스턴스 변수)로 선언하는 경우에는 불필요한 메모리 낭비가 발생할 수 있다.
•
객체를 통해 클래스 변수를 변경하는 경우 다른 모든 객체들을 통해 호출되는 클래스 변수도 변경된 상태로 바뀐다.
변수와 final
•
final이 붙은 변수는 단 한 번 초기화가 가능하다. 하지만 그 이후에는 값을 변경할 수 없는 상수이다. (C++의 const)
메서드 Modifier
Static Method
•
클래스로부터 인스턴스를 생성하지 않고 호출이 가능한 Method
•
인스턴스 변수는 인스턴스를 생성해야만 메모리가 잡히기 때문에 클래스 메서드에서는 사용이 불가능하다
•
클래스 메서드에서는 클래스 메서드만 호출이 가능함!
메서드와 final
•
자식 class에서 메서드를 재정의할 수 없도록 하는 예약어
추상 Method & 추상 Class
•
메서드의 시그니쳐(리턴 타입, 메서드명, 매개변수)만 정의되고 구체적인 행위, 즉 블록({}) 부분은 정의되지 않는 메서드를 의미
•
추상 메서드를 선언할 때는 abstract 예약어는 메서드 앞에 붙인다.
•
메서드의 구체적인 행위를 표현하는 블록을 생략한다.
•
추상 메서드를 포함하고 있는 클래스는 추상 클래스로 선언되어야 한다.
◦
하지만 추상 클래스가 추상 메서드를 포함하지 않을수도 있다.