カプセル化とは、情報へのアクセスや
動作の処理を隠蔽することで
アクセス制限ができることです。
カプセル化の利点は、
悪意がなく間違いによる操作があって場合でも
大切な情報の書き換えを防ぐことができます。
また想定しない利用が発生したならば、
その原因箇所を特定しやすくするための
仕組みでもあります。
アクセス範囲(スコープ)の設定には
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
package Sample; public class Sample1 { public static void main(String[] args) { // インスタンス生成 menber1 m1 = new menber1(); menber2 m2 = new menber2(); // 書き換え可能 m1.id = "33"; m1.name = "mori"; // コンパイルエラーで書き換え不可 m2.id = "44"; m2.name = "sano"; } } class menber1 { // ID String id = "11"; // 名前 String name = "suzuki"; // 仕事 String job = "doctor"; public String getId() { return id; } public String getName() { return name; } public String getJob() { return job; } } class menber2 { // ID private String id = "22"; // 名前 private String name = "sato"; // 仕事 private String job = "singer"; public String getId() { return id; } public String getName() { return name; } public String getJob() { return job; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
package Sample; public class Sample1 { public static void main(String[] args) { // インスタンス生成 menber1 m1 = new menber1(); menber2 m2 = new menber2(); // 書き換え可能 m1.id = "33"; m1.name = "mori"; // id、name、jobを取得 System.out.println("menber1の情報"); System.out.println(m1.getId()); System.out.println(m1.getName()); System.out.println(m1.getJob()); System.out.println("menber2の情報"); System.out.println(m2.getId()); System.out.println(m2.getName()); System.out.println(m2.getJob()); } } class menber1 { // ID String id = "11"; // 名前 String name = "suzuki"; // 仕事 String job = "doctor"; public String getId() { return id; } public String getName() { return name; } public String getJob() { return job; } } class menber2 { // ID private String id = "22"; // 名前 private String name = "sato"; // 仕事 private String job = "singer"; public String getId() { return id; } public String getName() { return name; } public String getJob() { return job; } } |
1 2 3 4 5 6 7 8 |
menber1の情報 33 mori doctor menber2の情報 22 sato singer |
カプセル化はプログラムの中で
必ず使われており
Form、Dto、Entityなどは、
カプセル化をして定義します。
まず最初にprivateで
フィールド値の初期値を設定します。
1 2 3 4 5 6 7 8 9 10 11 12 |
public class Sample2 { // ID private String id = ""; // 名前 private String name = ""; // 仕事 private String job = ""; // 男性 private boolean sex = false; } |
Eclipseでは、フィールド値を定義してから
ショートカットキーを入力するだけで
getter,setterメソッドの生成が可能です。
getter,setterメソッドの生成をしたい
フィールド値を選択しOKを押下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public class Sample2 { // ID private String id = ""; // 名前 private String name = ""; // 仕事 private String job = ""; // 男性 private boolean sex = false; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public boolean isSex() { return sex; } public void setSex(boolean sex) { this.sex = sex; } } |
※booleanの場合、getでなくisになります。
重要なメンバのアクセス制御では、
特別な理由がない限り、
という決まりになっています。
フィールドはメソッドによって守られており、
外部から直接アクセス出来ないようにします。
この記事へのコメントはありません。