Javaと同様、Scalaの場合もプログラミングはクラスからです。その使い方から見ていきましょう。第1回の開発環境の整備で紹介した「IntelliJ IDEA」でコードを動かしながら読み進めてください。

クラスとフィールドを宣言する

 早速クラスを使ってみましょう。今回はお金を表すMoneyクラスを例に取り、クラスの使い方を学びます。

リスト1●Moneyクラス
[画像のクリックで拡大表示]
リスト2●Moneyクラス(省略しないで書いたもの)
[画像のクリックで拡大表示]
リスト3●100円を表すコード
[画像のクリックで拡大表示]

 まず、リスト1のようにMoneyクラスを宣言します。前述したように、クラス宣言のデフォルト(既定)のアクセス修飾子はpublicです。Javaだと同一パッケージ内からしかアクセスできないパッケージプライベートですが、Scalaでは何も記述しなければpublicです。

 Moneyクラスには、二つの属性があります*1。金額の量を表すBigDecimal型のamountと、円やドルなどそのお金の単位(通貨単位)を表すCurrency型のcurrencyです*2

 この説明だけでは、理解しにくいと思うので、段階を追って解説しましょう。リスト1のコードを省略しないで記述したのがリスト2です。Scalaでは、クラス名の後ろにコンストラクタの引数の仕様を記述し、(1)のブロックがコンストラクタの処理ブロックとなります。このコンストラクタを基本コンストラクタ(primary constructor)と呼びます。また、このブロックはフィールド宣言のブロックでもあります。この例では、コンストラクタの引数からvalフィールドに代入しています*3。つまり、クラス宣言部とコンストラクタ宣言部をまとめて記述することで、簡潔で明瞭なコードを書けるわけです。

 さらに、コンストラクタの引数とフィールドは一対一対応しているので、このような記述も冗長です。この冗長さを取り除いて書いたのが、リスト1です。とても簡潔に、たった1行でクラスを定義できるわけです。このクラスを利用して、100円を表すコードを書くとリスト3のようになります。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら