BackEnd

PHPerだけどKotlinを勉強したって良いよね その1〜クラス編〜

投稿日:2018年2月2日 更新日:

はじめに

ひょんな事からKotlinを勉強することになりました。
私は普段はPHPやRubyのようなサーバーサイドスクリプト言語を使っており、あまりJavaに触れる機会がないため、拙い説明になってしまうかもしれません。
とはいえ、せっかく勉強をしているので、記事にしたいと思います。

勉強に使用した本はKotlinイン・アクションになります。
また、動作確認にはkotlincを使用しました。

インターフェース

基本

Kotlinだと interface キーワードを使うことで定義できます。

これをクラスで実装するためには、

Javaでいう@overrideアノーテーションの代わりにKotlinではoverride修飾詞をつける必要があります。これは必須です。
実際にやってみます。

試しに、overrideをつけないで実装しようとします。
すると、下記のようなコンパイルエラーが出ます。

  • インターフェースは複数実装できる。
  • クラスは1つしか継承できない。
  • override修飾詞は必須。つけないなら同じメソッド名を使わない。

デフォルト実装付メソッド

インターフェースにデフォルトで定義しておくこともできます。

デフォルト実装があるなら、具象クラスで再定義しなくても大丈夫です。

同じメソッド名を持つ複数のインターフェース

同様に、

ClickableFocusable を実装してみると、エラーになってしまいます。

同一メソッド名を持つ場合は、明示的にどちらのメソッドを使用するか宣言する必要があります。

Javaだと Clickable.super.showOff() になるところです。
実際に試してみます。

修飾子

open

Javaだと、明示的にfinalをつけなければ、全てのメソッドをオーバーライドできます。
ただ、Kotlinだとデフォルトがfinalになります。
もし、そのクラスのサブクラスを作成したい場合は、openをつける必要があります。

abstract

  • abstractをつけた抽象クラスはインスタンス化はできない。
  • interfaceと同様、抽象メンバは常にopen
  • 非抽象メンバはデフォルトではopenではないが、openにすることもできる。

可視性修飾子

  • public どこからも参照可能
  • internal モジュール内からのみ参照可能
  • protected サブクラスから参照可能
  • private クラス内からのみ参照可能(トップレベルだとファイル内からのみ参照可能)

internalというのは初めて見ました。
モジュールはコンパイル後のひとまとまりを指すそうです。

さいごに

勉強のまとめとして記事にさせていただきました。
他にもネストしたクラスやシールドクラスなどの解説も読んだのですが、まだ私の中で腑に落ちていないため、改めて記事にしたいと思います。

page_footer_300rect




page_footer_300rect




-BackEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

GoogleAppsScriptを使ってmBaaSの定期実行処理を実装する

1 はじめに1.1 簡単な状況説明1.2 定期実行を行う方法2 実装2.1 実装の流れ2.2 JavaScriptの実装2.3 スクリプトをアップロードする2.4 Google Apps Script ...

rails

Shrineを使って画像をアップロードする

1 はじめに2 Shrineとは2.1 簡単な説明2.2 作者2.3 特徴3 下準備3.1 Gemを追加3.2 初期設定3.3 テーブルを作成する4 実装4.1 Uploaderの実装4.2 Mode ...

rails

関連するモデルのレコードを一緒に作成する方法

1 はじめに1.1 前提条件2 実装2.1 モデルの作成2.2 コントローラの作成2.3 Viewの作成3 さいごに はじめに フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成 ...

aws

ALB+EC2な環境でhttpをhttpsにリダイレクトする

1 はじめに1.1 前提条件2 ALBの設定3 Nginxの設定3.1 注意点4 さいごに はじめに httpsに対応済みのWebサイトの場合、httpでアクセスされた時にhttpsでリダイレクトする ...

rails

ShrineでS3に画像をアップロードする

1 はじめに1.1 前提条件1.2 関連記事2 AWS側の準備2.1 S3バケットを作成する2.2 CORSを設定する2.3 アクセス用のユーザを作成する3 Rails側の設定3.1 Initiali ...

page_side_300rect

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。
下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。

アプリ情報

私たちは、目標を達成したい方を応援する、TODOアプリもリリースしております。
下記のアイコンから無料でダウンロードできます。

リンク

follow us in feedly
2018年2月
« 1月  
 123
45678910
11121314151617
18192021222324
25262728