独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆
6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき ないクラス。インスタンス化はできる。 public 他の全てのクラスから参照できる。継承もインスタンス化も制限 がない。このキーワードを指定しない場合は、現在のパッケージ からしかこのクラスを参照できない。
abstract の例 abstract class Test{ void display(){ } class Sum extends Test{ void display(){ System.out.println("Sum"); } class Pro extends Test{ void display(){ System.out.println("Pro"); } class Rei6_6{ public static void main(String args[]){ Test s = new Sum(); s.display(); s = new Pro(); s.display(); }
6.7 変数の修飾子 変数の修飾子 final 定数として使える変数。初期化した値から変えることができない。 private 同じクラスからしかアクセスできない変数。 protected サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数。 public 他のクラスからアクセスできる変数。 static インスタンス変数ではない変数。静的変数。通常の変数は、インスタンスご とに異なる値を保持し、インスタンス変数と呼ばれる。一方、静的変数はイ ンスタンスによらず共通のメモリ領域を占有する。 transient クラスの永続的な状態の一部ではない変数 volatile 不意に値が変更されることがある変数。 一部の修飾子は同時に指定できない。 修飾子を一切指定しないと、変数は非 final, 非 transient, 非 volatile なインスタンス変数 であると解釈される。 ここでは final 変数の使い方を示す他は 7 章で説明する。
final 変数の例 class Final{ static final int x =5; } class Rei5_7{ public static void main(String args[]){ System.out.println(Final.x); } 表示結果 5
宿題 1.abstract の例でサブクラス内で積と和を 計算して表示するプログラムを作成しな さい。 積と和のサブクラスをそれぞれ作りサ ブクラス内に計算する変数を2つ宣言す る。 2.final の例で変数xに値を代入するとどう なるか述べよ。
解答 class Circle{ double radius (double a){ return a * a * Math.PI; } class Syukudai4{ public static void main(String args[]){ double a = Integer.parseInt(args[0]); double b; Circle inst=new Circle(); // インスタンス化 b=inst.radius(a); // メソッド呼び出し System.out.print(" 半径 " + a); System.out.println(" の円の面積 : " + b); }