libro
www.tuyano.com
初心者のためのGroovy/Grails入門

30分でわかる(かも知れない)Groovy超入門! (4/5)

作成:2013-09-28 10:53
更新:2013-09-28 10:53

■クラスの利用はほぼJavaと同じ!

Groovyでは、基本的な機能はすべてJavaのシステムライブラリをそのまま使います。インスタンスを変数に代入し、メソッドを呼び出す基本的な操作もすべてJavaのままです。
def rnd = new Random()
def n = rnd.nextInt(100)
println(n)
例えば、こんな具合に実行すると、Randomインスタンスを作り、0~99の乱数を取得し表示します。実に簡単! Groovyでは変数宣言に型を指定する必要がありませんが、これはインスタンスの場合でも同じ。上の例なら、Random rnd = ○○と書いても、def rnd = ○○と書いても問題なく動きます。


■クラスの定義

では、自分でクラスを作成し利用する場合はどうなるか見てみましょう。これは、メソッドの定義がJavaと多少違っています。
class クラス名 {
    def フィールド名

    // コンストラクタ
    クラス名 ( 引数 ){
        ……処理……
    }

    def メソッド名 ( 引数 ){
        ……処理……
    }
}
クラスの定義そのものは、「class ○○」という形で記述します。これはJavaと同様ですね。フィールドは変数ですから、defで定義できます(型名を指定してももちろん可能です)。

問題はメソッドです。メソッドも、定義は「def」を使います。Javaのように返値などの指定は不要です。では、実際の利用例を挙げておきましょう。
class MyObj {
    def name
    def mail
    
    MyObj(nm,ml){
        name = nm
        mail = ml
    }
    
    def print(){
        println("name:${name}")
        println("mail:${mail}")
    }
}

def obj = new MyObj("tuyano","syoda@tuyano.com")
obj.print()
クラスMyObjを定義し、それを使っています。やたらと「def」が出てきますが、それ以外の点ではほとんどJavaと同じですね。


■継承の指定
class クラス名 extends スーパークラス名 {……}
継承を利用する場合も、Javaと同様に「extends」を使います。これはまったく違いはありません。


■インターフェイスの定義と利用
interface インターフェイス名 {……}
class クラス名 implements インターフェイス名 {……}
インターフェイスも、ほぼJavaと同じ書き方です。classの代りにinterfaceをつけて定義します。ただしそこで書かれるメソッドは「def メソッド名」というGroovyライクな書き方になりますが。

また利用もJavaと同じで、implementsを使います。複数のインターフェイスを設定したければカンマで区切って記述をします。下のリスト欄に簡単な例を挙げておきましょう。Javaとそっくりなのがわかりますね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※クラスを使う例

def rnd = new Random()
def n = rnd.nextInt(100)
println(n)


※クラスの利用例

class MyObj {
    def name
    def mail
    
    MyObj(nm,ml){
        name = nm
        mail = ml
    }
    
    def print(){
        println("name:${name}")
        println("mail:${mail}")
    }
}

def obj = new MyObj("tuyano","syoda@tuyano.com")
obj.print()



※インターフェイスの利用例

interface Myface {
    def helo()
}

class Myobj implements Myface {
    int helo(){
        print("helo!")
    }
}

def obj = new Myobj()
obj.helo()


※関連コンテンツ

「初心者のためのGroovy/Grails入門」に戻る