アットウィキロゴ
programmerassistant @ ウィキ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

programmerassistant @ ウィキ

■カプセル化

最終更新:

programmerassistant

- view
だれでも歓迎! 編集
■カプセル化(private)

オブジェクト指向の三本柱は
「継承」「カプセル化」「多態性(ポリモーフィズム)」
である。javaではオブジェクトのカプセル化を行うことによって
メンバ(フィールドとメソッド)へのアクセスをコントロールできる。

書き方:

(フィールド) private データ型 フィールド名;
(メソッド) private 戻り値   メソッド名(引数,…){…}

これによって、メンバへの不適切なアクセスを制限できる。
private という修飾子を使うとそのクラスの外部から
メンバを参照したり変更したりできなくなる。


----------------------------------------------
(なし):
private:
public: どのクラス・パッケージからでもOK
----------------------------------------------

(例)
・カプセル化が行われていないプログラム

public class Shain1{
String shimei;
int jikan;
int jikyu;
public int kyuyo(){
return jikan * jikyu;
}
}

public class KyuyoPrig{//Shain1クラスを用いて使う
public static void main(String args[]){
Shian1 tanaka = new Shain1();
tanaka.shimei ="田中一郎";
tanaka.jikan  =160;
tanaka.jikyu  =1000000;//ありえない値が代入できてしまう

System.out.println(tanaka.shimei+"さんの給与は"+tanaka.kyuuyo+"です");
}
}

カプセル化が行われていないので
ほかのクラスから好きな値を代入できてしまう。

・カプセル化がおこなわれているプログラム

public class Shiain2{
String name;
int jikann;
private int jikyuu //カプセル化されたjikyuu


public void setJiKyu(int j){
if(0<=j&&j<=10000){
jikyu=j;
}else{
System.out.println("時給");
}
}
}


public class KyuyoProg2{
public static void main(String args[]){
shain2 tanaka = new Shain2();
tanaka.shimei="田中一郎";
tanaka.jikan = 160;
//tanaka.jikyu=1000;アクセス不可
tanaka.setJikyu(1000);
System.out.println(tanaka.shimei+"さんの給与は"+tanaka.kyuuyo()+"です");
}
}

タグ:

+ タグ編集
  • タグ:
記事メニュー
最近更新されたスレッド
ウィキ募集バナー