筋トレ大好きな文系女学生のJava入門_カプセル化_privateとpublic
はじめに
最近、バイト先や通ってる施設などでコミュニケーション取る機会が増えて嬉しいです
「変わってる」とか「なんか面白いよね〜」といった言葉をよく言われます・・。笑
バイト始める以前は、家で何かして夕方からスポーツジム行くを毎日繰り返していたので、1日のうちに人と話すことが0の時もありました笑
なので、コミュニケーション取ることってマジでホンマに重要なんだな〜と心から強く思いました
今回はアクセス制御privateとpublicについてです。
独学でやってるので、「これはJavaやっていくにあたって役に立つ知識だぞ!!」というのがあれば、コメントして頂けるととても嬉しいです
アクセス制御
Javaでは、メンバ(フィールドやメソッド)に対してアクセス制御の設定を行うことができる。
だけど、それぞれのメンバに「MuscleBoyクラス、MuscleGirlクラスからの利用は許す」「Proteinクラス、Trainerクラスからの利用は許す」のように細かく指定するのは面倒くさい!そこで、下の表にあるpublicやprivateといったアクセス修飾子をメンバの前で宣言することで、アクセス制御が可能になる
【フィールドのアクセス制御】
アクセス修飾子 フィールド宣言;【メソッドのアクセス修飾子】
アクセス修飾子 メソッド宣言{...}
privateを利用
筋トレ大好きな文系女学生のJava入門_カプセル化の目的&メリットでは、筋肉ボーイのHPが-100になってしまう大変な事態が起こってしまった。そこで、他のクラスから筋肉ボーイのHPを変更されないようhpフィールドにprivate宣言をする。
1 public class MuscleBoy{
2 private int hp;
3 String name;
4 static int money;
5
6 void sleep(){
7 this.hp = 100;
8 System.out.println(this.name + "は、寝て体力を回復した!!");
9 }
10}
hpフィールドにprivateを指定したため他のクラスでhpフィールドを変更した場合、「hpフィールドへはアクセスできない」というコンパイルエラーが発生する。
しかし!!筋肉ボーイのHPが一切変更することができなというわけではない!
privateなフィールドであっても、「this」を用いたsleepメソッドのように、同じクラスのメソッドからであればhpフィールドの値を変更することができるのだ
publicやpackage privateを利用
筋肉ボーイは生けた芸術作品である筋肉を鍛えることがお仕事であるため、いろいろなクラスから呼び出せるように、workOutメソッドにpublic宣言をする。
1 public class MuscleBoy{
2 private int hp;
3 String name;
4 static int money;
5
6 void sleep(){....}
7
8 public void workOut(){
9 this.hp -= 10;
10 System.out.println(this.name + "は、筋トレをした!");
11 System.out.println("-10ポイントHPが減少した!");
12 }
13 }
sleepメソッドにはpublicを付けないままにしている。この場合、sleepメソッドはpackage privateを指定したとみなされ、同じパッケージに所属するクラスからのみ呼び出しが可能
Author And Source
この問題について(筋トレ大好きな文系女学生のJava入門_カプセル化_privateとpublic), 我々は、より多くの情報をここで見つけました https://qiita.com/amippy/items/8e6f7eb6bae9e82e1559著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .