JAVA-접근제어자
자바의 접근제어자: Member또는 Class에 해당되는 Member 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 함
자바의 접근 제어자
접근 제어자 | 범위 |
---|---|
Private | Class내 |
Default | 같은 패키지 |
Protected | 같은 패키지+ 다른 패키지의 자손 Class |
Public | 모든 범위 |
1. Private
Private는 Class내에서만 접근할 수 있어서, 자원이나 Logic을 보호하기 위하여 사용 된다
Encapsulation: 보호된 자원에 접근하기 위하여 Set, 과 Get Method를 활용하여 자원의 변경을 한다. => Encryption과 Automation의 장점이 있다.
Get 과 Set을 사용할때 같은 같은 변수명을 사용하기 위하여 this를 사용하게 된다. this는 객체, 자기 자신을 나타내게 된다. => 변수의 이름을 같게하여 자원의 재활용성을 늘리게 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private int a = 3;
//Public - Variables and methods with public
access control can be accessed from any Class
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
/*
this. is used to make sure that the global field is the instance field
when the parameters of the method or constructor are the same.
=>Increase recyclability by continuing to use variables of the same name
*/
}
/*
Encapsulation - To access the private variable,
access the method as public and execute the operation on the variable.
Advantage: Encryption, Automation
*/
2. Protected
Protected가 붙은 변수, 메소드는 동일 패키지내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
public class Car {
protected String name = "Car";
}
public class Sonata {
public static void main(String[] args) {
Car c1 = new Car();
System.out.println(c1.name);
//car
}
}
3. Default
Access Modifier를 설정하지 않으면 자동으로 정의되는 Access Modifier이다. 해당 패키지 내에서만 접근이 가능하다.
1
int a =3;
4. Public
Public은 Public 접근 제어자가 붙은 변수, 메소드는 어떤 클래스 에서도 접근이 가능하다.
Public으로 선언하게 되면 어디에서도 사용가능한 편리성이 생기지만, Private의 장점인 Encryption과 Automation를 보장받을 수 없다. => 많이 사용되는 것만 최소한으로 사용하는 습관을 들이도록 하자
1
2
3
4
5
6
7
8
9
10
11
public class Car {
protected String name = "Car";
}
public class Sonata {
public static void main(String[] args) {
Car c1 = new Car();
//위에서 Car라는 Class를 public으로 선언하여
다른 클래스에서 접근하여 객체를 만들 수 있었다.
}
}
참조: 원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.
Leave a comment