黄昏より暗きもの、血の流れより赤きもの

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

クラスの継承とクラス変数の修飾子に関する問題

問題


下記プログラムの出力結果を答えよ。


基本事項



private修飾子:自分自身が含まれるクラス内からしかアクセスできない

protected修飾子:同じパッケージ及び継承するサブクラスからしかアクセスできない。

public修飾子:全ての場所からアクセス可能。

解答と解説


num1 = 1,num2=3,num3=5,num4=1,num5=,num6=5(答)。解説は以下のコードを見てほしい。

同じ事をJava言語で行ってみる




PHPJavaとの違い


PHPと同じ事をJavaで実践しようとしたら、「Aクラスのクラス変数num2は、Aクラス以外からはアクセスできません」という旨のエラーメッセージが表示された。そのためnum2はコメントアウトして実装してある。


question.java:28: num2 has private access in A
System.out.println("num4="+ this.num1 + ",num5=" + this.num2 + ",num6="+ this.num3);

Javaコンパイラを介してプログラムを実行するため、このように細かい所を怒ってくれるのが嬉しい。一方PHPインタプリタで動作しているので、こういったミスは見逃されやすい。クラス変数を設定する際には、きちんと修飾子を付ける。PHPなどのインタプリタ言語はきちんと動作しているかを逐一確認するか、いいテキストエデイタを探す等した方が良さそうだ。