본문 바로가기
[JAVA]/JAVA 기본

[JAVA] 캡슐화

by 팡펑퐁 2022. 9. 6.
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