** 자기 공부용 및 암기용으로 포스팅하는 글 입니다.
** 정확한 정보는 보장 할 수 없으니, 참고용으로만 봐주시면 감사하겠습니다.
** 제 개인적인 생각 및 자기 암시목적으로 작성되기에 이점 양해 부탁드립니다.
들어가기에 앞서..
객체지향 프로그래밍 설계를 지탱하는 핵심적인 4가지의 기둥이 존재한다.
그것은 상속/캡슐화/추상화/다형성 이다.
그 중에 두번째인 캡슐화 에 관하여 배워 보도록하자.
★ 알아볼 내용
1. Package & Import
2. 접근 제어자
3. getter와 setter 메서드
내용 설명
1. Package & Import
1) Package
특정한 목적을 공유하는 클래스와 인터페이스의 묶음을 의미한다.
패키지가 있는 경우 소스 코드의 첫 번째 줄에 반드시 패키지명이 표기되어야 한다.
// 패키지를 생성했을 때
package practicepack.test; // 패키지 구문 포함. 패키지가 없다면 구문 필요없음
public class PackageEx {
}
2) Import
다른 패키지 내의 클래스를 사용하기 위해 사용되는 문장이다.
package practicepack.test;
public class ExampleImp {
public int a = 10;
public void print() {
System.out.println("Import 문 테스트");
}
}
package practicepack.test2; // import 문을 사용하는 경우
import practicepack.test.ExampleImp // import 문 작성
public class PackageImp {
public static void main(String[] args) {
ExampleImp x = new ExampleImp(); // 이제 패키지 명을 생략 가능
}
}
2. 접근 제어자
접근제어자 | 접근 제한 범위 |
private | 동일 클래스에서만 접근 가능 |
default | 동일 패키지 내에서만 접근 가능 |
protected | 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능 |
public | 접근 제한 없음 |
3. getter와 setter 메서드
객체지향의 캡슐화 목적으로 외부에서 해당 데이터의 값을 직접적으로 변경하지 말아야한다.
그렇다면은 어떻게 해야만 외부에서 캡슐화 목적을 달성하면서 데이터 변경이 가능할까.
이런 경우 대표적으로 private 접근 제어자가 포함되어 있는 객체 데이터 값을 추가 및 수정할 때 우린 getter메서드와 setter메서드를 사용 할 수 있다.
아래와 같이 진행할 경우 데이터를 효과적으로 보호하면서 의도하는 값으로 값을 변경 할 수 있다.
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
'JAVA 지식 및 공부' 카테고리의 다른 글
[JAVA] 객체지향 프로그래밍 : 다형성 (1) | 2024.06.11 |
---|---|
[JAVA] 객체지향 프로그래밍 : 추상화 (0) | 2024.06.10 |
[JAVA] 객체지향 프로그래밍 : 상속 (1) | 2024.06.07 |
[JAVA] StringTokenizer & StringBuilder & StringBuffer (0) | 2024.06.06 |
[JAVA] Collection - 열거형(Enum) 정리 (0) | 2024.05.29 |