ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 은닉화 ( encapsulation ) : 캡슐화
    JAVA 2020. 1. 2. 15:42
    반응형

    - 캡슐화 개념



    캡슐화는 일반적으로 변수와 클래스를 하나로 묶는 작업이다.  캡슐화의 중요 목적은 중요한 데이터를 보존,보호하기 위해 사용하는 것이다.  즉 캡슐화는 클래스에 담는 내용중 중요한 데이터나 기능을 외부에서 접근하지 못하게하기 위해 사용한다고 알아 두면 된다.

    캡술화 = 은닉성 이라고 생각하면 쉽다.





    - 캡슐화 방법



    1. 멤버 변수 앞에 접근 제어자 private를 붙인다. (private: 자기 클래스에서만 접근할 수 있는 것 )

    2. 멤버 변수에 값을 넣고 꺼내 올 수 있는 메소드를 만든다 (접두어 set/get을 사용해 메소드를 만든다.)



    구체적으로 어떤 말일까? 자 학생이란 클래스와 학교라는 클래스를 만들었다고 가정해보자. 학생이라는 클래스에서

    학생의 나이들은 private 가 붙어있다. 즉 은닉화 되어있다. 이때 학교 클래스에서 학생의 정보를 호출할려고한다.

    이떄는 평소의 방법으로 접근이 되지 않을 것이다.

    이제 예제를 보자



    - 캡슐화 예제

    public class student{
      private String name;
      private int id;
      private int age;
       
      public void setName(String name){
          this.name = name;  }
     
      public void setId(int id){
          this.name = name;  }
     
      public void setAge(int age){
          this.name = name;  }
     
      public void getName(){
         return name;  }
     
      public void getId(){
          return id;  }
     
      public void getAge(){
         return age;  }
     }
    w

    public classs School {
        
        public static void main(String[] args) {
               student stu = new student();
               stu.SetName("홍길동");
               stu.SetId(2017313297);
               stu.SetName(20);
     
               System.out.println("이름 :" +stu.getName());
               System.out.println("학번 :" +stu.getId());
               System.out.println("나이 :" +stu.getAge());
           }
       }


    이처럼 school 과 student 서로 다른 2개의 클래스가 있다고 가정하자.

    우리는 student의 멤버변수들에 private를 붙여서 은닉화 시켰다. 그리고 school클래스에서 이 student의 멤버변수를 조작하는것은

    전에 했듯이 this가 붙은 메소드를 활용하면 된다. 그런데 호출 하는것이 문제이다.

    만약에 우리가 평소에 해왔듯이 stu.age 처럼 하면 바로 오류가 발생할것이다. 왜냐? 은닉화 되어있기떄문에 

    바로 접근할수가 없다.!! 그래서 위처럼 우리는 메소드를 이용해 간접적으로 접근한다.

    반응형
Designed by Tistory.