KotlinDive

プログラミング言語 Kotlin についての入門ブログです。

2018-02-01から1ヶ月間の記事一覧

クラス(データクラス)

Data Transfer Object アプリを作成していると、単純にひとまとまりのデータを保持しておきたい場合があります。 たとえば、データベースから関連するデータを取り出して(いはゆるモデル層)、画面に表示する(いわゆるビュー層)場合などです。 このように、モ…

クラス(エクステンション)

エクステンション 既存のクラスの機能を拡張する基本的な方法は、そのクラスを継承して派生クラスを作成することです。 しかし、Kottlinでは継承以外にもクラスの機能を拡張する方法があります。 これを、「エクステンション」といいます。 「エクステンショ…

クラス(抽象クラス/インターフェース)

抽象クラス クラスのメンバーにキーワード「abstract」をつけて宣言することができます。 これを抽象メンバーと言います。 抽象メンバーは処理や値といった具体的な実装を持ちません(持つことができません) 抽象メンバを持つクラスを抽象クラスと呼び、この…

クラス(オーバーライド)

メソッド Kotlinでは、オーバーライド可能なメンバーには明示的に「open」キーワードを付けなければいけません。 また、子クラスで実際にオーバーライドしているメンバーには「override」キーワードを付ける必要があります。 fun main(args: Array) { val st…

クラス(ヴィジビリティ)

ヴィジビリティ修飾子 クラス、オブジェクト、インターフェース、コンストラクタ、関数、プロパティとそのセッターに対して、ヴィジビリティを設定することができます。 (ゲッターのヴィジビリティはプロパティのヴィジビリティと同じものになります) Kotlin…

クラス(継承)

Any Kotlinでは、すべてのクラスは「Any」クラスを継承しています。 特に、親クラスについて指定していないクラスも、暗黙的に「Any」クラスを継承します。 なお、この「Any」はJavaの「java.lang.Object」とは別のクラスです。 「Any」には「equals()」「ha…

クラス(プロパティ)

プロパティの宣言 クラスのボディに「val」キーワードで宣言すると読取り専用で、 「var」キーワードで宣言すると変数としてプロパティを宣言できます。 プロパティは必ず初期化しないといけません。初期化は「プロパティイニシャライザ」か「イニシャライザ…

クラス(コンストラクタ)

クラスの宣言とクラスメンバ クラスは「class」キーワードで宣言します。 クラスは、メンバと呼ばれる以下の要素で構成されます。 メンバ 内容 コンストラクタイニシャライザブロック インスタンスの初期化 関数 Javaでいうメソッド プロパティ Javaでいうメ…

例外

例外 Kotlinでは、例外クラスはすべて「Throwable」クラスを継承しています。 例外クラスは必ずメッセージとスタックトレースを持っています。 また、任意で例外がスローされた原因についての情報も持つことができます。 例外をスローするためには、「throw…

ラムダ式と匿名関数

匿名関数 ラムダ式では返り値の型を明示的に指定することができません。 明示的に指定できなくても、自動的に推測してくれるため、大抵の場合は問題ありません。 しかし、何らかの事情で返り値の型を明示的に指定したい場合、「匿名関数」を利用することがで…

ラムダ式の基本

高階関数 高階関数とは、ある関数を引数に持つような関数のことです。 関数を引数として渡すというのは、もう少し言うと関数の参照を渡すということです。 関数の参照は、関数名の前に「::」をつけることで取得できます。 例えば、次のサンプルのgetNonNull…

型チェックとキャスト

is ある変数の実体の型が何であるかを判定するためには「is」演算子を利用します。 is演算子でチェックされた変数は、自動的に判定された型にキャストされます。 これをスマートキャストといいます。 fun main(args: Array) { val str = "string" val obj: A…