Javaのお勉強その4
- クラスの書き方
クラスの修飾子はpublic、abstract、finalの3種類ある
クラスの書き方は次の通り。5種類あるが、すべてを使う必要はない。
public class Car{ int fuel=50; // フィールド {...} // インスタンス初期化子 static {...} // 静的初期化子 Car(){...} // コンストラクタ void run(){...} // メソッド }
静的初期化子は、クラスがJava Virtual Machineにロードされるときに実行される。
インスタンス初期化子は、オブジェクトが生成されるときに実行される。
インスタンスを生成するには、Car mycar = new Car();とする。
- 継承
継承によってクラスの機能を拡張できる。基のクラスをスーパークラス、継承して作るクラスをサブクラスという。インタフェースも継承により拡張可能である。
拡張するにはextendsというキーワードを用いる。以下の例ではCarクラスを継承してpatrolCarクラスを作成している。
public class patrolCar extends Car{ // コンストラクタやメソッドを記述 }
サブクラスでスーパークラスにあるフィールドやメソッドを宣言できる。サブクラスでその名前を使うと、サブクラスで定義されたものになる。スーパークラスのものにアクセスしたい場合は、"super."を付ければよい。
サブクラスでスーパークラスにあるアクセス可能なメソッドを再定義することをオーバーライドという。
オブジェクトを参照する変数に対し、変数.フィールドとすると、変数の型のフィールドを意味する。staticがついていないメソッドの場合、変数.メソッドは変数の型ではなく、オブジェクトの型のメソッドが呼ばれる。
- final
finalのついた変数は、1回だけ値を与えることができる。以後変更はできない。クラスや配列でも同様。他のオブジェクトを指すようにする変更はできない。ただし、オブジェクトのデータを変更することは可能である。
staticのついていないフィールドは、定義の場所で初期化する以外にコンストラクタや、インスタンス初期化子{...}で初期化する方法がある。staticのついたメソッドは、静的初期化子( static {...} )で初期化することもできる。
finalのついたメソッドのオーバーライドは不可能である。
finalのついたクラスのサブクラスは作成不可能である。
0 件のコメント:
コメントを投稿