이 글은 2019년 홍익대학교 자바 겨울 특강 수업을 메모한 것이다.
당시에는 에버노트에 메모해놨었기 때문에,
티스토리 블로그를 시작하면서 백업해둔다.
접근 제어자
클래스의 멤버 변수와 멤버 메소드의 외부 접근 제한
접근제어자 사용 이유(hiding/encapsulation)(은닉화/캡슐화)
-
클래스 내부 데이터 보호
-
2. 클래스 내부에서만 사용되거나 내부에서 임시로 사용되는 멤버변수 or 멤버메소드들을 클래스 내부에 감추기 위해 (감춤)
-
3. 외부에서 접근할 필요가 없는 멤버들을 외부에 노출시키지 않음으로서 복잡성을 줄임(hiding/encapsulation) (복잡성을 줄임)
public : 외부 클래스에서의 접근 모두 허용
privatie : 외부 클래스의 접근이 모두 차단/같은 클래스에서만 접근가능. 제한적인의 의미로도 쓰인다.
pretected : 상속관계를 가진 클래스와 같은 패키지안의 클래스들끼리는 public 접근, 그 외의 클래스들ㅇ레게는 private 접근
default : 같은 패키지 내에서의 클래스들끼리 접근 가능(기본값) (패키지는 chapter6를 말함. amp와 oop는 서로 접근이 가능하다는 것)
접근 제어 범위
public > protected > default > private
영역을 침범해서 접근하여 뉴카를 생ㅅ어해왔음. amp 클래스에서 카클래스 영역에 접근해와서 사용한다는 것과 같은 의미.
만약에 카 클래스에 접근할 수 없다면 amp 클래스에서는 뉴카 를 만들지 못한다.
amp에서 car 클래스로 접근은 되는데 int speed에는 접근을 모하도록 설정할 수 있다.
getter와 setter : 은닉화 한 것에 구조적으로는 접근 가능하도록 만들어준다.
package chapter6;
class car {
int speed;
int wheel;
String carname;
car() {
}
void setspeed(int speed) {
this.speed = speed;
}
//void 무, 형태가 정해지지 않았다, 존재하지 않는
int getspeed() { //메소드의 형태가 정수형이다. 왜냐면 돌려줘야할 값 speed가 int형이기 때문이다.
//메소드 자체가 사용되면 메소드를 통해 사용된 값을 우리한테 바로 돌려줄수있다.
//그 명령어가 return이다.
//어디로 return해주냐면 mycar.getspeed에.
return this.speed;
}
void speedup() {
speed++;
}
void speeddown() {
speed--;
}
void stop() {
}
}
public class amp {
public static void main(String[] args) {
car mycar = new car();
// car.speed = 1; //access_modifier class에서 접근불가
mycar.speed = 1; //access_modifier class에서 접근불가
mycar.setspeed(10);
mycar.speedup();
System.out.println(mycar.getspeed());
}
}
'┝ 개발 언어 > ┎ JAVA' 카테고리의 다른 글
1/28 오버라이딩 (0) | 2022.03.01 |
---|---|
1/28 상속 (0) | 2022.03.01 |
1/28 클래스 변수와 인스턴스 변수 (0) | 2022.03.01 |
1/28 oop_this (0) | 2022.03.01 |
1/28 오버로딩 (0) | 2022.03.01 |