일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 고잉버스
- 프로그래머스
- 스프링 빈
- 리눅스마스터 1급 정리
- toCharArray
- 스프링 컨테이너
- 코테
- JavaScript
- 코딩테스트
- 카카오
- 명령어
- 백준 java
- 리눅스마스터1급
- GoingBus
- 연습문제
- 리눅스
- map
- Linux
- Memoir
- 리눅스마스터 3과목
- 반복문
- Java
- 백준 javascript
- Kotlin
- 문자열
- 월간코드챌린지
- java 백준 1차원 배열
- 개발자 회고록
- 자바스크립트 코딩의 기술
- 자바
- Today
- Total
hoon's bLog
Java public, protected, private, static, final 제어자 본문
안녕하세요! 오늘은 제어자에 대해서 포스팅을 해보도록 하겠습니다.
제어자란?
제어자(modifier)는 클래스, 변수 또는 매서드의 선언부에 함께 사용되어 부가적인 의미를 부여합니다.
주로 사용하는 접근제어자로는 public, protected, default, private, static, final, abstract 가 있고,
그 외 natvie, transient, synchronized, vloatile, strictfp 등이 있습니다.
Static이란?
- static 은 '클래스의' 또는 '공통적인'의 의미를 가지고 있습니다.
- 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만,
클래스변수(static 멤버 변수)는 인스턴스에 관계없이 같은 값을 갖습니다.
(그 이유는 하나의 변수를 모든 인스턴스가 공유하기 때문!!)
- static이 붙은 멤버변수와 메서드, 그리고 초기화 블록은 인스턴스가 아닌,
클래스에 관계 된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있습니다.
- static이 사용될 수 있는 곳 : 멤버변수, 메서드, 초기화 블록
대상 | 의미 |
멤버변수 | - 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 됩니다 - 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능합니다. - 클래스가 메모리에 로드될 때 생성됩니다. |
메서드 | - 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 됩니다 - static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없습니다. |
class StaticTest {
static int width = 200; //클래스 변수
static int height = 120; //클래스 변수
static {
//static 변수의 복잡한 초기화 수행 (초기화 블록)
}
static int max(int a, int b) {
//클래스 메서드 return a > b ? a : b;
}
}
final이란?
- final 은 '마지막의' 또는 '변경될 수 없는'의 의미를 가지고 있으며 거의 모든 대상에 사용될 수 있습니다
- 변수에 사용하면 값을 변경할 수 없는 상수가 되며, 메서드에 사용하면 오버라이딩을 할 수 없게 되고,
클래스에 사용되면 자신을 확장하는 자손 클래스를 정의하지 못하게 됩니다.
- final이 사용될 수 있는 곳 : 클래스, 메서드, 멤버변수, 지역변수
대상 | 의미 |
클래스 | - 변경될 수 없는 클래스, 확장할 수 없는 클래스가 됩니다. - final로 지정된 클래스는 다른 클래스의 조상이 될 수 없습니다 |
메서드 | - 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다. |
멤버변수 지역변수 |
변수 앞에 final 이 붙으면, 값을 변경할 수 없는 상수가 된다 |
abstract란?
- abstract는 '미완성'의 의미를 가지고 있습니다.
- 메서드의 선언 부만 작성하고 실제 수행 내용은 구현하지 않은 추상메서드를 선언하는 데 사용합니다
- abstract가 사용될 수 있는 곳 : 클래스, 메서드
대상 | 의미 |
클래스 | - 클래스 내에 추상메서드가 선언되어 있음을 의미 |
메서드 | - 선언 부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알립니다 |
접근제어자
접근제어자가 사용 가능한 곳 : 클래스, 멤버변수, 메서드, 생성자
접근제어자는 외부로부터 데이터를 보호하기 위해서,
외부에 불필요한, 내부적으로 사용되는 부분을 감추기 위해서 사용됩니다!
이게 바로 우리가 앞에서 배웠던 캡슐화이죠!
접근제어자 사용 범위를 정리하면 다음과 같습니다.
public : 접근 제한 없음 protected : 동일한 패키지 내의 클래스 또는 해당 클래스를 상속받은 외부의 클래스에서 접근 가능. default : 동일한 패키지 내의 클래스에서 접근 가능. private : 동일한 클래스에서만 접근 가능. |
이렇게 접근자에 대해서 정리해봤습니다.
오늘도 긴 글 읽어주셔서 감사하고,
이만 포스팅 마무리하겠습니다:)
출처 : 자바의 정석 3rd Edition 내용 정리
'IT > Java' 카테고리의 다른 글
Java String class 자바 스트링 클래스 (0) | 2021.01.06 |
---|---|
Java Object class 객체클래스 (0) | 2021.01.06 |
Java interface implements 자바 인터페이스 구현 (0) | 2021.01.06 |
Java Abstract Class 자바 추상 클래스 (0) | 2021.01.06 |
Java method Overriding, Overloading 자바 메서드 오버라이딩과 오버로딩 (0) | 2021.01.06 |