#접근수식어 (접근지정자, 접근 제한자)
#접근수식어 (접근지정자, 접근 제한자)
* public, > protected, > default(아무것도 없는거), > private *
Access/Modifier | Same class | Same package | Subclass | universe
public | YES | YES | YES | YES
protected | YES | YES | YES |
(default) | YES | YES | |
private | YES | | |
private - 같은 클래스 안에만
default - 같은 클래스, 같은 패키지 안에서 사용가능
protected - 같은 클래스, 같은 패키지, 상속 클래스 패키지가 달라도 상속 관계면 사용이 가능하다
public - 모든곳에서 가능
****class 접근 제한자는 public 와 default 만 사용이 가능하고, ****
****method, field 에는 4개다 사용이 가능하다. ****
#private : 오직 같은 클래스 안에서만 접근이 가능
접근 제어자가 private으로 설정되어 있다면 private이 붙은 변수, 메소드는 해당 클래스에서만 접근이 가능하다.
public class AccessModifier {
private String secret;
private String getSecret() {
return this.secret;
}
}
secret 변수와 getSecret()메소드는 AccessModifier 클래스에서만 접근이 가능하고 다른 클래스에서는 접근이 불가능하다.
#default : 다른 클래스도 괜찮, 근데 같은 패키지 안에는 있어야함
접근제어자를 별도로 설정하지 않는다면 접근제어자가 없는 변수, 메소드는 dafault 접근제어자가 되어 해당 패키지 내에서만 접근이 가능하다.
HouseKim.java
*package jump2java.house; //패키지가 동일
public class HouseKim {
String lastname = "kim"; //default 접근 제한자 같은 패키지에 다른 클래스에서도 사용이 가능하다
}
HousePark.java
*package jump2java.house; //패키지가 동일
public class HousePark {
String lastname = "park";
public static void main(String[] args) {
HouseKim kim = new HouseKim();
System.out.println(kim.lastname); //default 지정자인 lastname에 접근이 가능하다.
}
}
위의 예제를 보면 같은 패키지 안에 있는 두 클래스에서 default 접근제한자를 가지고 있으면 접근이 가능하다.
#protected 같은 패키지 안에 있으면 무조건 접근이 가능하고, 또 다른 패키지 라도 상속 받은 클래스가 있으면
접근이 가능하다
HousePark.java
*package jump2java.house;
public class HousePark {
protected String lastname = "park";
}
EungYongPark.java
*package jump2java.house.person;
import house.HousePark; // 패키지가 다를 경우 import 해줘야 한다.
// 다른 패키지인 경우에 import 해서 사용해야하는데 protect 접근 제한자는 상속받은 경우에 다른
클래스에서 접근이 가능하다.
public class EungYongPark extends HousePark { //상속 받은 경우에 접근이 가능하다
public static void main(String[] args) {
EungYongPark eyp = new EungYongPark();
System.out.println(eyp.lastname);
}
}
패키지가 다른데 HousePark 클래스에 접근이 가능한 이유는
EungYongPark 클래스가 HousePark 클래스를 상속 받기 때문이다.
그래서 protected 접근제한자도 접근이 가능하다.
#public
import 로 패키지를 가지고 올 수 있으면 어떤 변수, 메소드 전부다 접근이 가능하다.
'JAVA > JAVA 기본 문법' 카테고리의 다른 글
[JAVA]-Java 상속 (0) | 2019.01.19 |
---|---|
[JAVA]-Java Encapsulation (0) | 2019.01.19 |
[JAVA]-Java #Method Overloading (0) | 2019.01.19 |
[JAVA]-Java 클래스 생성자 (0) | 2019.01.19 |
[JAVA]-Java 클래스 (0) | 2019.01.19 |