
특정 객체 안에 관련된 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것
특정한 목적을 공유하는 클래스와 인터페이스의 묶음이다.
다른 패키지 내의 클래스를 사용하기 위해 사용한다.
// test1 패키지
package packageexam.test1;
public class ImportExam {
public int a = 0;
public void print(){
System.out.println("Import문 출력");
}
}
// test2 패키지
package packageexam.test2;
import packgeexam.test1.ImportExam; // Import문 작성
public class PackegeExam{
public static void main(String[] args){
ImportExam imp = new ImportExam(); // test패키지의 class를 활용
}
}
클래스, 필드, 메서드 ,생성자 등에 부가적인 의미를 부여하는 키워드이다.
| 접근 제어자 | 접근 제한 범위 | 클래스 내 | 패키지 내 | 다른 패키지의 하위 클래스 | 패키지 외 |
|---|---|---|---|---|---|
| private | 동일 클래스에서만 접근 가능 | O | X | X | X |
| default | 동일 패키지 내에서만 접근 가능 | O | O | X | X |
| protected | 동일 패키지와 다른 패키지의 하위 클래스에서 접근 가능 | O | O | O | X |
| public | 접근 제한 없음 | O | O | O | O |
packge packagetest; // 패키지명 packagetest
// 파일명 : Parent.java
class Exam { // 접근 제어자 : 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 { // 접근 제어자 : public
private String a = "Private";
String b = "Default";
protected String c = "Protected";
public String d = "Public";
public void print2(){ // 동일 클래스로 모두 정상 출력
System.out.println(p.a);
System.out.println(p.b);
System.out.println(p.c);
System.out.println(p.d);
}
}
// test 클래스 출력 결과
// "Default"
// "Protected"
// "Public"
대표적으로 private 접근 제어자가 포함된 객체의 변수의 데이터 값을 수정해야할 때 사용한다.
public class GetterSetter {
public static void main(){
Tester t = new Tester();
t.setName("Mason");
t.setAge(32);
t.setId("masonlee7629");
String name = t.getName();
System.out.println("테스터의 이름은 " + name);
int age = t.getAge();
System.out.println("테스터의 나이는 " + age);
String id = t.getId();
System.out.println("테스터의 ID는 " + id);
}
}
class Tester {
private String name;
private int age;
private String id;
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 String getId(){
return id;
}
public void setId(String id){
this.id = id;
}
}
// 출력 결과
// 테스터의 이름은 Mason
// 테스터의 나이는 32
// 테스터의 ID는 masonlee7629