Kotlin-class-and-object

提供:Dev Guides
移動先:案内検索

Kotlin-クラスとオブジェクト

この章では、Kotlinを使用してオブジェクト指向プログラミング(OOP)の基本を学習します。 クラスとそのオブジェクト、およびそのオブジェクトで遊ぶ方法について学びます。 OOPの定義では、クラスはランタイムエンティティの設計図であり、オブジェクトはその状態であり、その動作と状態の両方が含まれます。 Kotlinでは、クラス宣言は、Javaと同様に、クラスヘッダーと中括弧で囲まれたクラス本体で構成されます。

Class myClass {//class Header

  //class Body
}

Javaと同様に、Kotlinではクラスの複数のオブジェクトを作成することもでき、そのクラスメンバーと関数を自由に含めることができます。 第10章-可視性制御で学習するさまざまなキーワードを使用して、クラスメンバー変数の可視性を制御できます。 次の例では、1つのクラスとそのオブジェクトを作成し、それを介してそのクラスの異なるデータメンバーにアクセスします。

class myClass {
  //property (data member)
   private var name: String = "Tutorials.point"

  //member function
   fun printMe() {
      print("You are at the best Learning website Named-"+name)
   }
}
fun main(args: Array<String>) {
   val obj = myClass()//create obj object of myClass class
   obj.printMe()
}

上記のコードは、独自のオブジェクトを使用してmyClassのprintMe()を呼び出しているブラウザーで次の出力を生成します。

You are at the best Learning website Named- Tutorials.point

ネストされたクラス

定義により、クラスが別のクラス内に作成されると、ネストされたクラスとして呼び出されます。 Kotlinでは、ネストされたクラスはデフォルトで静的であるため、そのクラスのオブジェクトを作成せずにアクセスできます。 次の例では、Kotlinがネストされたクラスをどのように解釈するかを確認します。

fun main(args: Array<String>) {
   val demo = Outer.Nested().foo()//calling nested class method
   print(demo)
}
class Outer {
   class Nested {
      fun foo() = "Welcome to The finddevguides.com"
   }
}

上記のコードは、ブラウザに次の出力を生成します。

Welcome to The finddevguides.com

内部クラス

ネストされたクラスが「内部」としてマークされると、内部クラスとして呼び出されます。 内部クラスには、外部クラスのデータメンバーがアクセスできます。 次の例では、外部クラスのデータメンバーにアクセスします。

fun main(args: Array<String>) {
   val demo = Outer().Nested().foo()//calling nested class method
   print(demo)
}
class Outer {
   private val welcomeMessage: String = "Welcome to the finddevguides.com"
   inner class Nested {
      fun foo() = welcomeMessage
   }
}

上記のコードは、ブラウザーで次の出力を生成します。ここでは、コンパイル時にKotlinコンパイラーが提供するデフォルトコンストラクターを使用して、ネストされたクラスを呼び出しています。

Welcome to the finddevguides.com

匿名の内部クラス

匿名の内部クラスは、プログラマーの生活を非常に簡単にする非常に優れた概念です。 インターフェイスを実装するたびに、匿名の内部ブロックの概念が浮かび上がります。 ランタイムオブジェクト参照を使用してインターフェイスのオブジェクトを作成する概念は、匿名クラスと呼ばれます。 次の例では、インターフェイスを作成し、匿名内部クラスメカニズムを使用してそのインターフェイスのオブジェクトを作成します。

fun main(args: Array<String>) {
   var programmer :Human = object:Human//creating an instance of the interface {
      override fun think() {//overriding the think method
         print("I am an example of Anonymous Inner Class ")
      }
   }
   programmer.think()
}
interface Human {
   fun think()
}

上記のコードは、ブラウザに次の出力を生成します。

I am an example of Anonymous Inner Class

タイプエイリアス

型エイリアスは、Kotlinコンパイラのプロパティです。 既存のタイプの新しい名前を作成する柔軟性を提供しますが、新しいタイプは作成しません。 タイプ名が長すぎる場合は、短い名前を簡単に導入し、将来の使用に備えて同じ名前を使用できます。 型のエイリアスは、複雑な型に非常に役立ちます。 最新バージョンでは、Kotlinは型エイリアスのサポートを取り消しましたが、古いバージョンのKotlinを使用している場合は、次のように使用できます-

typealias NodeSet = Set<Network.Node>
typealias FileTable<K> = MutableMap<K, MutableList<File>>