728x90
목차
1. 접근지정자
■ 접근지정자란?
- 외부에서 어느정도 접근을 허용하는지에 대한 키워드이며 이를 통해 캡슐화의 특징을 가짐
- 변수, 메소드, 클래스의 앞에 사용
- 아무것도 입력하지 않으면 default 상태임
- 4가지의 키워드가 있으며 각각 public, protected, default, private로 구성
접근 지정자 | 클래스 내부 | 동일 패키지 | 하위 클래스 | 다른 패키지 |
---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
2. Getter, Setter
■ Getter
- 데이터를 가지고 올 때 사용
- 필요한 필드 값을 가공함
■ Setter
- 외부에서 주어진 값을 필드 값으로 수정
- 접근지정자와 Getter, Setter를 통해 캡슐화 기능 활성
3. Example
■ J11_Student
package j11_접근지정자;
public class J11_Student {
private String name;
private int age;
public J11_Student() {
}
public J11_Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void printInfo() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
}
■ J11_StudentDefault
package j11_접근지정자.default1;
public class J11_StudentDefault {
// private를 통해 데이터의 은닉
private String name;
private int age;
public J11_StudentDefault() {
}
public J11_StudentDefault(String name, int age) {
this.name = name;
this.age = age;
}
public void printInfo() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
// Getter는 값을 가지고 오는 것이며 get변수명으로 지음
public String getName() {
return name;
}
// Setter는 값을 대입하여 주는 것이며 set변수명으로 지음
public void setName(String name) {
this.name = name;
}
// ${변수명}은 변수명을 카멜표기법으로 표기한 Getter를 호출
// ${name}
}
■ J11_StudentMain
package j11_접근지정자;
// 다른 패키지의 자료형을 사용하기 위해 import함
import j11_접근지정자.default1.J11_StudentDefault;
public class J11_StudentMain {
public static void main(String[] args) {
J11_Student s1 = new J11_Student();
s1.printInfo();
J11_StudentDefault s2 = new J11_StudentDefault();
s2.name = "김준이";
System.out.println("이름 : " + s2.name);
// 보호를 위해 직접 접근을 제한하고 메소드를 통해 데이터를 가져와야함
System.out.println("이름 : " + s2.getName());
}
}