그저 내가 되었고
☕️Java:: 제어자(modifier); static, final, abstract 본문
제어자란?
-> 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여.
-> 주로 클래스나 멤버변수와 메서드에 주로 사용됨.
-> 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있음.
-> 접근 제어자: public, protected, default, private
-> 그외: static, final, abstract, native, transient, synchronized, volatile, strictfp
-> 제어자는 여러개를 조합하여 사용할 수 있음.
static:: 클래스의, 공통적인
-> static멤버변수(클래스변수)는 인스턴스들에 공통된 값을 뿌려줌.
-> static이 붙은 멤버변수와 메서드, 그리고 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용 가능.
-> 인스턴스메서드 vs static메서드의 근본적인 차이는 메서드 내에서 인스턴스 멤버를 사용하는가의 여부
-> 인스턴스 멤버를 사용하지 않는 메서드는 static을 붙여서 static method로 선언하는것을 고려하자. 가능하면 static method로 하는 것이 인스턴스를 생성하지 않고도 호출이 가능해서 더 편리하고 속도도 빠르다.
제어자 | 대상 | 의미 |
static | 멤버변수 | - 모든 인스턴스에 공통으로 사용되는 클래스 변수 - 클래스변수는 인스턴스를 생성하지 않고도 사용 가능 - 클래스가 메모리에 로드될때 생성됨 |
메서드 | - 인스턴스를 생성하지 않고도 호출이 가능한 static method - static method 내에서는 인스턴스멤버들을 직접 사용할 수 없다 |
final:: 마지막의, 변경될 수 없는
-> 변수에 쓰면? 상수
-> 메서드에 쓰면? 오버라이딩 불가
-> 클래스에 쓰면? 자손클래스 정의 불가
제어자 | 대상 | 의미 |
final | 클래스 | 변경 불가능한 클래스 확장 불가능한 클래스 그러므로 다른 클래스로 상속 불가 |
메서드 | 변경 불가능한 메서드 오버라이딩 통한 재정의 불가 |
|
멤버변수 | 상수 | |
지역변수 |
abstract:: 추상의, 미완성의
-> 추상메서드(메서드의 선언부만 작성하고 구현부는 비워둠)를 선언할 때 사용
-> 즉, 추상클래스에는 아직 완성되지 않은 메서드가 존재하는거니까 인스턴스를 생성할 수 없음
-> 클래스에 사용되어 클래스 내에 추상메서드가 존재한다는 것을 쉽게 알 수 있게 함
제어자 | 대상 | 의미 |
abstract | 클래스 | 클래스 내에 추상 메서드가 있다 |
메서드 | 이건 추상 메서드이다 |
abstract class AbstractClass { //추상클
abstract void itsMe(); //추상메
}
출처:: 자바의 정석 3rd edition 1권 OOP
'개발 > Java' 카테고리의 다른 글
☕️Java:: 생성자 오버로딩이란? (0) | 2023.07.10 |
---|---|
☕️Java:: 다형성(polymorphism)이란? (0) | 2023.06.16 |
☕️Java:: 생성자(Constructor) (0) | 2023.06.08 |
☕️Java:: 변수의 초기화 (0) | 2023.06.07 |
☕️Java:: 자바 코드 기본적 분석 & final 키워드 (0) | 2023.06.01 |