제어자
클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여
Static
공통적인 느낌이 강하다
멤버 변수:
모든 인스턴스에 공통적으로 사용되는 클래스 변수, 인스턴스 생성하지 않고도 사용 가능, 클래스가 메모리에 로드될 때 생성
메서드:
인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다. static메서드 내에서는 인스턴스 변수가 사용 불가능하다. 왜냐하면 메모리에 로드가 되지 않은 상태에서 사용은 불가능하기 때문이다.
초기화 블럭:
클래스 변수를 초기화할 때 사용
Fianl
변경될 수 없다는 느낌이 강하다
클래스:
변경될 수 없는 클래스, 상속 불가능하게 만든다.
메서드:
변경될 수 없는 메서드, 오버라이딩 불가능
멤버변수, 지역변수:
변경할 수 없는 변수, 상수가 된다.
인스턴스 변수의 경우 생성자를 통해 상수값을 초기화할 수 있다.
Abstract
추상적
클래스:
클래스 내에 추상메서드가 존재한다는 것을 말한다. 추상 클래스는 인스턴스를 생성하지 못한다.
메서드:
선언부만 작성하고 구현부는 작성하지 않았다. 따라서 abstract 메서드를 선언하게 되면 해당 클래스에도 abstract를 넣어야 한다.
접근 제어자
접근 제어자에는 private < default < protected < private(접근 범위 순) 가 있다.
클래스 : public default,
생성자의 접근 제어자는 클래스의 제어자와 비슷하게 간다. 다르게도 가능 ( 대표적인 예. Singleton 패턴)
1
2
3
4
5
6
7
8
9
10
11
12
|
class final Singleton {
private Singleton single = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return single;
}
}
|
메서드, 멤버변수 : 전부
지역 변수 : X
접근 제어자를 왜 사용할까?
접근 제어자는 말 그대로 접근을 제어하데 사용합니다. 이를 통해 외부에서 내부 데이터를 접근을 막아 데이터의 변형등을 막기 위해 사용합니다. (이는 객체지향개념의 캡슐화에 해당합니다.) 또한 부가적인 이점으로 테스트를 할 때 접근 제어자를 통해 오류 범위를 한정 지을 수 있습니다.
외부에서 접근을 막으면 어떻게 접근할까?
외부에서 데이터에 접근을 막기 위해 접근 제어자를 사용합니다. 그렇기 때문에 외부에서 내부로 접근할 수 있는 통로를 만들어야 하는데 함수가 이 역할을 합니다.
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
|
class Shape {
private int width;
private int height;
Shape(int width, int height) {
this.width = width;
this.height = height;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
}
|
위 코드와 같이 통로 역할을 getter와 setter함수를 통해 접근을 합니다.
'JAVA > 자바스터디' 카테고리의 다른 글
상속 - 추상클래스 (0) | 2022.11.17 |
---|---|
상속 - 다형성 (0) | 2022.11.17 |
상속 (0) | 2022.11.13 |
[자바스터디] 5. 클래스 (0) | 2022.01.06 |
[자바스터디] 4. 선택문, 반복문 (0) | 2022.01.06 |