728x90
반응형
접근 제어자 (Access Modifier)
자바는 접근제어자를 사용하여 변수나 메서드의 사용 권한을 설정할 수 있다.
- private
- default
- protected
- public
- private
- 접근 제어자가 private으로 설정되어 있다면 private이 붙은 변수, 메서드는 해당 클래스에서만 접근이 가능하다.
- 아래 secret 멤버변수와 getSecret 메서드는 오직 Sample 클래스에서만 접근이 가능하다.
public class Sample {
private String secret;
private String getSecret() {
return this.secret;
}
}
- default
- 접근 제어자를 별도로 설정하지 않는다면 접근 제어자가 없는 멤버 변수 및 메서드는 default 접근제어자가 되어
해당 패키지 내에서만 접근이 가능하다. - HouseKim 과 HousePark의 패키지는 house로 동일하다. 따라서 상호간의 멤버변수에 접근이 가능하다.
- 접근 제어자를 별도로 설정하지 않는다면 접근 제어자가 없는 멤버 변수 및 메서드는 default 접근제어자가 되어
house/HouseKim.java
package house;
public class HouseKim{
String lastname = "kim";
}
house/HousePark.java
package house;
public class HousePark{
String lastname = "park";
public static void main(String[] args) {
HouseKim kim = new HouseKim();
System.out.println(kim.lastname);
}
}
- protected
- 접근제어자가 protected로 설정되었다면 protected 가 붙은 멤버 변수 및 메서드는
동일 패키지의 클래스 또는 해당 클래스를 상속 받은 다른 패키지의 클래스에서만 접근이 가능하다. - HouseHong 클래스를 상속한 GilDongHong 클래스의 패키지는 house.person 으로
HouseHong의 패키지인 house와 다르지만 HouseHong의 lastname 변수가 protected 이기 때문에
gdh.lastname 과 같은 접근이 가능하다. - 만약 lastname의 접근제어자가 protected가 아닌 default 접근제어자였다면
gdh.lastname 문장은 컴파일 오류가 발생할 것이다.
- 접근제어자가 protected로 설정되었다면 protected 가 붙은 멤버 변수 및 메서드는
house/HouseHong.java
package house;
public class HouseHong{
protected String lastname = "hong";
}
house/person/GilDongHong.java
package house.person;
import house.HouseHong;
public class GilDongHong extends HouseHong{ // HouseHong 을 상속
public static void main(String[] args) {
GilDongHong gdh = new GilDongHong();
System.out.println(gdh.lastname);
}
}
- public
- 접근제어자가 public 이라면 public 접근제어자가 붙은 변수 및 메서드는 어떤 클래스에서도 접근이 가능하다.
- info 변수는 public 접근 제어자가 붙어 있으므로 어떤 클래스라도 접근이 가능하다.
package house;
public class HouseHong{
protected String lastname = "Hong";
public String info = "this is public message.";
}
import house.HouseHong;
public class Sample{
public static void main(String[] args) {
HouseHong househong = new HouseHong();
System.out.println(househong.info);
}
}
728x90
반응형
'Language > Java' 카테고리의 다른 글
Java - Exception (0) | 2023.03.27 |
---|---|
Java - Static (0) | 2023.03.27 |
Java - Abstract Class (0) | 2023.03.27 |
Java - Polymorphism (0) | 2023.03.27 |
Java - Interface (0) | 2023.03.26 |