【Java】캡슐화의 이해에 관한 복습을 해 나간다

9839 단어 자바

목적


  • 캡슐화에 관한 복습과 정착

  • 실제 절차와 예



    1. 캡슐화란?


  • 캡슐화 란 객체의 정보를 캡슐처럼 정리하고 내용을 은폐한 채로 객체를 이용한다.
  • 캡슐화의 이미지는
  • 외부에서 방어됨
  • 캡슐에 싸여있다

  • "객체의 데이터"를 감싸고 "객체 외부에서 무단 액세스"를 방지합니다.

    이러한 이미지를 가지고 문제를 예로 생각해 갑니다.

    2. 예제



    문제



    Practice.java를 실행한 결과가 동일하도록 NoCapsule.java를 Capsule.java로 변경하고 캡슐화된 프로그램으로 변경하십시오.

    실행 결과
    好きな食べ物はラーメンです
    週に1回食べています
    最近は週に2回食べるようになりました。。。
    

    NoCapsule.java
    package practice;
    
    public class NoCapsule {
        public String food;
        public int count;
    
        public NoCapsule(String food, int count) {
            this.food = food;
            this.count = count;
        }
    }
    

    Practice.java
    package practice;
    
    public class Practice {
        public static void main(String[] args) {
            NoCapsule eat = new NoCapsule("ラーメン", 1);
            System.out.println("好きな食べ物は" + eat.food +  "です。");
            System.out.println("週に" + eat.count + "回食べています。");
            eat.count = 2;
            System.out.println("最近は週に" + eat.count + "回食べるようになりました。。。");
        }
    }
    

    답변



    먼저 문제가 되는 대로 NoCapsule.java를 Capsule.java로 변경합니다.

    이대로도 실행은 가능합니다만, 실수로 외부의 프로그램이 변경 금지의 필드를 변경해 버리는 것을 방지하기 위해, 메소드나 필드에 액세스 수식자를 설정해 액세스를 제한합니다.

    Capsule.java
    package practice;
    //「NoCapsule.java」を「Capsule.java」に変更
    public class Capsule {
    //  アクセス修飾子をpublicからprivavteに変更
        private String food;
        private int count;
    
        public Capsule(String food, int count) {
            this.food = food;
            this.count = count;
        }
    //  実行ファイルで使用できるようにpublicで定義
        public String getFood() {
            return food;
        }
    //  getterはフィールドの値を取得できるようにするメソッド
        public int getCount() {
            return count;
        }
    //  setterはメソッドや値を変更するメソッド
        public void setCount(int count) {
            this.count = count;
        }
    }
    
    

    Practice.java
    package practice;
    
    public class Practice {
        public static void main(String[] args) {
    //      「NoCapsule.java」を「Capsule.java」に変更
            Capsule eat = new Capsule("ラーメン", 1);
    //      getterで定義した変数を使用する
            System.out.println("好きな食べ物は" + eat.getFood() + "です。");
            System.out.println("週に" + eat.getCount() + "回食べています。");
    //      setterで値を変更
    //      引数に変更する値を代入
            eat.setCount(2);
            System.out.println("最近は週に" + eat.getCount() + "回食べるようになりました。。。");
        }
    }
    

    실행 결과도 완전히 동일합니다.
    好きな食べ物はラーメンです
    週に1回食べています
    最近は週に2回食べるようになりました。。。
    

    또, Eclipse에서는, 아래와 같은 개소로부터 간단하게 자동으로 캡슐화도 가능합니다!


    참고로 한 기사


  • 캡슐화란 무엇인가? 슈퍼 알기 쉽게 해설합니다!
  • 좋은 웹페이지 즐겨찾기