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


関連記事

Laravelの開発環境をdocker-composeで一から構築してみる

1 はじめに2 nginxでwebサーバを立てる2.1 default.conf作成2.2 index.html作成2.3 nginxコンテナ起動3 nginxでPHP-FPMを動作させる3.1 do ...

laravel logo

Laravelで認証APIを作る

1 はじめに1.1 条件1.2 JWTとは2 準備2.1 認証機能を有効化2.2 jwt-authのインストール2.3 コンフィグファイルの作成2.4 secretの作成3 Userモデルを修正4 g ...

icon

PHP、Ruby、Pythonのfor構文を比較してみた

1 はじめに1.1 環境2 ドキュメント2.1 PHP2.2 Ruby2.3 Python3 1から100まで出力してみる3.1 PHP3.2 Ruby3.3 Python4 リスト型(配列)の出力4 ...

RubyのHanamiチュートリアルをやってみた

1 はじめに2 紹介2.1 Hanamiとは?2.2 Hanamiを選ぶ理由2.2.1 軽量2.2.2 アーキテクチャとして2.2.3 スレッドセーフ3 チュートリアルのための準備4 実践4.1 はじ ...

laravel logo

[Laravel] ログの扱い方 [5.8]

1 はじめに2 環境3 Monologについて4 コード上で設定する方法5 config/logging.phpで設定する方法6 おまけ:ログレベルについて7 さいごに8 おすすめ書籍 はじめに こん ...

フォロー

follow us in feedly

page_side_300rect

2018年2月
« 1月 3月 »
 123
45678910
11121314151617
18192021222324
25262728 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。