22 動的型付け (dynamic typing) 変数定義時に型を書かなくて良い (defキーワード) –書くことも出来る 実行時に型が決定する=動的型付け –Javaで実現する場合は複数のクラスで共通するメソッドを定義したインター フェースを作成し、それを各クラスで実装(implements)する必要がある class Cat { void bark() {println "ニャー!"}; } class Dog { void bark() {println "ワン!"}; } def animal if (new Random().nextInt(2) == 0) { animal = new Dog() } else { animal = new Cat() } animal.bark() class Person { def name int age } 1/2の確立でどちらか のインスタンスが作成 されるので実行する までanimalの型は分 からない
35 (補足)前ページのStaffクラスのプロパティを小文字にする 前ページのソースコードでStaffクラスのプロパティが大文字になっているのは、 DB2のSAMPLE DBのSTAFF表の各列が大文字で定義されているためです –RDBでは、オブジェクトの名前を大文字で定義するのは一般的です プロパティを小文字にしたい場合、SELECTの列リストにASを付けてアンサー セット上の名前を変える(別名を付ける)のが簡単です ただし、DB2では「コーテーションで囲まれていない小文字英語リテラルは自動 的に大文字に変換される」ため、以下のようにコーテーションで囲む必要があり ます(ちょっと面倒ですね) ※ヒアドキュメントで記述すれば、コーテーションの前のエスケープ(¥)は省略できます "SELECT ID as id, NAME as name, SALARY as salary FROM ..." class Staff { def id def name def salary } "SELECT ID as ¥"id¥",NAME as ¥"name¥", SALARY as ¥"salary¥" FROM ... "