【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에서는, 아래와 같은 개소로부터 간단하게 자동으로 캡슐화도 가능합니다!
참고로 한 기사
Reference
이 문제에 관하여(【Java】캡슐화의 이해에 관한 복습을 해 나간다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nao0725/items/2899266bd8e28d35fdd9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)