728x90
캡슐화
특정 객체 안에 관련된 속성과 기능을 캡슐화하여 데이터를 외부로부터 보호하는 것
목적
- 데이터 보호
- 정보 은닉
패키지
특정한 목적을 공유하는 클래스와 인터페이스의 묶음으로, 하나의 디렉터리라고 할 수 있다. 디렉터리는 하나의 계층 구조를 가지고 있으며 구분은 점(.)으로 한다. 패키지로 클래스를 묶게 되면 클래스 간의 충돌을 방지할 수 있다.
import 문
다른 패키지 내의 클래스를 사용하기 위해 작성하며, 일반적으로 패키지 구문과 클래스 문 사이에 위치한다.
import 패키지명.클래스명;
import 패키지명.*; // 해당 패키지의 모든 클래스를 패키지명 없이 사용 가능
접근제어자
외부로부터 데이터 보호와 불필요한 데이터 노출을 방지한다.
접근제어자 | 클래스 내 | 패키지 내 | 다른 패키지의 하위 클래스 | 패키지 외 |
Private | O | X | X | X |
Default | O | O | X | X |
Protected | O | O | O | X |
Public | O | O | O | O |
setter와 getter 메서드
두 메서드를 활용해 데이터를 보호하면서도 의도하는 값으로 변경할 수 있다.
setter 메서드
외부에서 메서드에 접근하여 조건에 맞는 경우에 데이터 값을 변경 가능하게 한다. 일반적으로 메서드명에 set-을 붙인다.
getter 메서드
setter 메서드를 통해 설정한 변수값을 읽어오는 데 사용한다.
public class Main {
public static void main(String[] args) {
Student s = new Student();
//s.name = "스즈"; // private라 안됨
s.setName("스즈"); // set- 메서드를 통해 내부 클래스의 private 변수에 접근
s.setAge(18);
s.setGrade(2);
System.out.println("이름 : " + s.getName()); // get 메서드를 통해 출력
System.out.println("나이 : " + s.getAge());
System.out.println("학년 : " + s.getGrade());
}
}
class Student {
private String name;
private int age;
private int grade;
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 getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
728x90
'[JAVA] > JAVA 기본' 카테고리의 다른 글
[JAVA] 형변환 총정리 (0) | 2022.09.12 |
---|---|
[JAVA] 추상화와 인터페이스 (1) | 2022.09.08 |
[JAVA] 상속 (0) | 2022.09.06 |
[JAVA]내부 클래스 (0) | 2022.09.05 |
[JAVA] 생성자 (0) | 2022.09.05 |