■カプセル化(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()+"です");
}
}
オブジェクト指向の三本柱は
「継承」「カプセル化」「多態性(ポリモーフィズム)」
である。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()+"です");
}
}