SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Java開発者のためのCurl入門(AD)

Java開発者のためのCurl入門-JavaとCurlの構文比較

最終回

  • このエントリーをはてなブックマークに追加

4 パッケージ/クラス/メソッド

 次は、独自にクラスなどを作成するときに必要になる構文を主に説明します。

4-1 パッケージ宣言

 package宣言を行うには、「package」を使用します。

Java
package com.samples;

...
Curl
{package com.samples
...
}

4-2 import

 importを行うには、「import~from~」を使用します。

Java
import jp.codezine.*;
import jp.codezine.Foo;
Curl
{import * from jp.codezine;}
{import Foo from jp.codezine;}

4-3 アクセスレベル

 Curlのアクセス修飾子は、下記表の対応するJavaの修飾子と同じ意味になります。例えば、protectedなら、サブクラスと同じパッケージのクラスからアクセス可能です。

アクセス修飾子の対応表
Java Curl
public public
protected protected
パッケージプライベート(未指定) package
private private

4-4 クラス定義

 クラス定義を行うには、「define-class」を使用します。

Java
public class Monkey {
    ...
}
Curl
{define-class public Monkey
    ...
}

4-5 メソッド定義

 メソッド定義を行うには、「method」を使用します。

Java
public class Dog {
    public String call() {
        return "Bow Wow!";
    }
}
Curl
{define-class public Dog
    {method public {call}:String
        {return "Bow Wow!"}
    }
}

 また次のようなコードでメソッドをコールできます。

メソッドをコールするソース
{curl 6.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{define-class public Dog
    {method public {call}:String
        {return "Bow Wow!"}
    }
}

{value
    let dog:Dog = {Dog}
    let result:String = {dog.call}
    result
}

 引数がある場合は、メソッド名の次に引数を指定し、メソッドをコールするときはメソッド名の後ろに引数を記述します。

引数を持つメソッドの定義
{method public {methodName arg0:int,arg1:String}:void
    ...
}
引数を持つメソッドのコール
{obj.methodName 99, "foo"}

 Javaと同様に、可変長引数もサポートされています。

 また、Curlには、コンパイラがメソッドの呼び出しを実際のメソッドのコードに置換するということを指定する「inline」というメソッドの修飾子などもあります。さらに、戻り値については、void、1個の戻り値以外に複数の戻り値を返すことも可能です。詳細は次のURLを参照にしてください。

4-6 抽象クラス定義

 Javaと同様に「abstract」を使用します。

Java
public abstract class Animal {
    ...
}
Curl
{define-class public abstract Animal
    ...
}

4-7 継承

 継承を行うには、「inheritsブロック」の中にSuperクラスを記述します。

Java
public class Monkey extends Animal {
    ...
}
Curl
{define-class public Monkey {inherits Animal}
    ...
}

 Curlではインターフェースを作れない代わりに多重継承が可能となっています。また、Javaと同様にメソッドのオーバーライドも可能です。

Curlの多重継承
{define-class public Foo {inherits Bar,Baz}
    ...
}

4-8 instanceof

 Javaのinstanceofに相当する演算子は、「isa」です。

Javaのinstanceof
if(value instanceof Person) {
    ...
}
Curlのisa
{if (value isa Person) then
    ...
}

4-9 キャスト

Javaのキャスト(その1)
Monkey monkey = (Monkey)object;
Javaのキャスト(その2)
Monkey monkey = Monkey.class.cast(object);

 キャストを行うには、「asa」を使用します。

Curlのキャスト
{let monkey:Monkey = object asa Monkey}

次のページ
5 Javaに存在しないCurlの仕組み

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Java開発者のためのCurl入門連載記事一覧

もっと読む

この記事の著者

木村聡(キムラサトシ)

2000年からJavaによるWeb開発に携わる。Seasarプロジェクトコミッタであり、コミッタとしての経験をもとに現在は仕事としてフレームワークの開発を行っている。著書に、「Javaフレームワーク開発入門」や「Eclipseで学ぶはじめてのJava」等がある。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3651 2009/03/13 11:46

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング