접근 제어자
접근 제어자는 캡슐화를 구현하기 위한 핵심적인 방법이다.
접근제어자는 4개가 존재한다.

변수, 메서드에 접근제어자를 붙여 다른 생성자, 클래스 등에서 해당 변수, 메서드에 접근하는것을 제어 할 수 있다.
->불필요한 데이터 노출 방지, 데이터 임의변경 방지
위의 접근제어자의 사용 봄위는 아래와 같다.

코드예시
package package1; // 패키지명 package1
//파일명: Parent.java
class Test { // Test 클래스의 접근 제어자는 default
public static void main(String[] args) {
Parent p = new Parent();
// System.out.println(p.a); // 동일 클래스가 아니기 때문에 에러발생!
System.out.println(p.b);
System.out.println(p.c);
System.out.println(p.d);
}
}
public class Parent { // Parent 클래스의 접근 제어자는 public
private int a = 1; // a,b,c,d에 각각 private, default, protected, public 접근제어자 지정
int b = 2;
protected int c = 3;
public int d = 4;
public void printEach() { // 동일 클래스이기 때문에 에러발생하지 않음
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
// 출력값
2
3
4
위의 Parent 클래스에서 각각 private, default, protected, public 접근제어자가 지정 되어 있다. (접근제어가자 안붙은 경우 그냥 default로 설정된다. )
동일 클래스에서는 해당 클래스 내의 제어자 모두 사용 가능하다.
하지만 위에서 private에 대항되는 변수 a를 가져오려고 할 때 접근제어자의 존재로 동일 클래스가 아닌 p에서 해당 변수를 가져오지 못한다.
getter , setter 메서드
아무리 접근제어자로 막아놔도 종종 그 변수를 사용해야 할 때가 있다
그때 사용하는 것이 getter , setter 메서드 이다.
setter 메서드는 외부에서 접근하여 조건에 맞을 경우 데이터값을 변경 가능하게 하는 메서드 이다.
작성예시 : set + 메서드명
getter 메서드는 설정된 변수 값을 읽어오는데 사용된다.
작성예시 : get + 메서드명
코드 예시
public class GetterSetterTest {
public static void main(String[] args) {
Worker w = new Worker();
w.setName("김코딩");
w.setAge(30);
w.setId(5);
String name = w.getName();
System.out.println("근로자의 이름은 " + name);
int age = w.getAge();
System.out.println("근로자의 나이는 " + age);
int id = w.getId();
System.out.println("근로자의 ID는 " + id);
}
}
class Worker {
private String name; // 변수의 은닉화. 외부로부터 접근 불가
private int age;
private int id;
public String getName() { // 멤버변수의 값
return name;
}
public void setName(String name) { // 멤버변수의 값 변경
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age < 1) return;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
// 출력값
근로자의 이름은 김코딩
근로자의 나이는 30
근로자의 ID는 5
위의 코드를 보면 Worker 클래스에서 선언된 변수들이 private로 접근제어자가 설정되어 있어 클래스 내부에서만 사용 가능한 상태이다.
하지만 아래에 후속된 메서드들에 set, get의 키워드를 붙이는 것으로 해당 변수들을 사용 가능하다.
set + 메서드명 으로 선언된 메서드는 이름, 나이, id 값을 설정하게 하고
get + 메서드명 은 설정된 값들을 출력하는 메서드 들이다.
가장 위를 보면 w로 생성된 객체는 Worker 외부에 있는 것이지만 getter , setter 메서드를 통해 Worker 의 변수들을 사용해서 w.getName(); , w.getAge();, w.getId(); 를 실행 가능하게 해주기 때문에 출력 또한 Worker 변수를 참조한 출력이 가능하다.
출처: https://half-forty.tistory.com/26 [팔랑귀 블로그:티스토리]
'백엔드 > JAVA_이론공부' 카테고리의 다른 글
JAVA_추상화 , 추상 클래스, abstract 제어자 (0) | 2022.09.22 |
---|---|
JAVA_다형성, instanceof 연산자 (1) | 2022.09.22 |
JAVA_캡슐화, 패키지, import (0) | 2022.09.18 |
JAVA_super, super() (0) | 2022.09.18 |
JAVA_메서드 오버라이딩 (0) | 2022.09.18 |