Kotlinの中のオブジェクト指向(二)について詳細に説明する。


Kotlinの中のオブジェクト指向(二)について詳細に説明する。
Kotlinの中のオブジェクト指向(一)において、Ktlinクラスの関連動作が紹介されているが、ここでは上記に基づいて、属性、インターフェースなど、同様に重要なオブジェクトに向けた機能を紹介し続ける。
属性

class AttrDemo{ 
 private var attr1 : String = ""; 
 protected var attr2 : String = ""; 
 public var attr3 : String = ""; 
 
 var varattr : String = ""; 
 val valattr : String = ""; 
 
 var attr = 1; 
} 
属性は各オブジェクトの中で最も基本的な単位であり、必要不可欠な部分でもあります。Javaと同じように、Kotlinはprvate、protected、publicの3つの宣言変数を提供しています。Kotlinでアクセス権限がない場合、デフォルトではpublicタイプと見なされます。一方、Kotlinは、varとvalが属性を表す読み書き権限を提供し、varは読み書き可能変数であり、valは読み取り専用変数であり、Java中のfinalに類似している。
なお、Kotlinは空の安全に対して非常に厳しいので、すべての属性を初期化する必要があります。したがって、属性の種類は直接的に値を付けて説明することもできます。必ずしも後にコロンで追加されるとは限りません。しかし、Javaの文法に慣れた開発者には属性のタイプが明記されているかもしれません。シナリオ言語に慣れた開発者は直接的に値を付ける傾向があります。
Kotlinでは、getとsetの方法が必要ではない。Kotlinはgetとsetの方法を自動的に処理するので、直接的に属性を呼び出す方法になる(Kotlinの第一行コードの説明を参照することができる)が、Kotlinは独自のgetとsetを使用する方法がある。

private var attr1 : String 
get() = attr1.toString() 
set(value) { 
 attr1 = value 
} 
 
protected var attr2 : String 
get() { 
 //TODO GET 
 return attr2.toString() 
} 
set(value) { 
 attr2 = value 
} 
Kotlinはgetとsetを設定するための様々な方法を提供しています。上のコードには2つのget方法とset方法が示されています。時々、get、setのアクセス権限を変更したい場合、または注釈を使用する場合、get、setを直接操作してもいいです。

var attr4 : String = "" //       
private set 
インターフェース
Javaと同様に、Kotlinはインタフェースのキーワードとしてインタフェースを使っています。抽象的なタイプと比べて、抽象的な方法と方法の実現が含まれていますが、インタフェースは状態を保存できません。

interface mInterfaceDemo{ 
 fun function1() 
 fun function2(){ 
   
 } 
} 
引き継ぐ方式と似ていますが、実現インターフェースもコロンを使っています。

class InterfaceDemoImpl : mInterfaceDemo{ 
 override fun function1() { 
  TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
 } 
 
} 
インターフェースで属性を説明できますが、インターフェースの属性は抽象的か、アクセスの実現を提供します。インターフェース属性は予備フィールドがあってはいけません。そしてアクセスはそれらを参照することができません。
汎型
汎型はプログラム設計言語の特性です。プログラマが強いタイプのプログラミング言語でコードを作成する時に可変部分を定義することができます。それらの部分は使用前に必ず指定してください。javaのようにKotlinのクラスはタイプパラメータを持つことができます。

class GenericDemo<T>(t : T){ 
 var value = t 
} 
一般的には、このようにオブジェクトを構築する必要があります。

val generic: GenericDemo<Int> = GenericDemo<Int>(1) 
ただし、タイプが推論が必要であれば、入力無視タイプのパラメータによって作成することもできます。

val generic = GenericDemo(1) 
ネスト類
Kotlinのクラスは他のクラスにも嵌められます。

class Outer { 
 private val bar: Int = 1 
 class Nested { 
  fun foo() = 2 
 } 
} 
外部クラスへの参照はinner修飾子によって追加できます。内部クラスは外部クラスの属性を呼び出すことができます。

class Outer { 
 private val bar: Int = 1 
 inner class Inner { 
  fun foo() = bar 
 } 
} 
 
val demo = Outer().Inner().foo() //==1 
匿名の内部クラスをオブジェクト式で作成します。

mvp_button.setOnClickListener(object : View.OnClickListener{ 
 override fun onClick(v: View?) { 
  TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
 } 
}); 
オブジェクトが関数的なjavaインターフェースの例(例えば、抽象的な方法しかないjavaインターフェース)であれば、バンドインターフェースタイプのlamda表現で作成できます。

mvp_button.setOnClickListener { 
 startActivity(Intent(MainActivity@this,MVPActivity::class.java)) 
} 
列挙類
列挙類の最も基本的な使い方は、タイプの安全を実現する列挙であり、それぞれの自挙定数は一つの対象である。列挙の定数はカンマで区切られます。

enum class Direction { 
 EAST,NORTH,SOUTH,WEST 
} 
すべての列挙オブジェクトは一例ですので、初期化できます。

enum class Color(val rgb: Int) { 
 RED(0xFF0000), 
 GREEN(0x00FF00), 
 BLUE(0x0000FF) 
} 
エニュメレート・オブジェクトの内容を呼び出したい場合は、valueofを通じてあるエニュメレート・オブジェクトの値を取得したり、valuesを通じてすべてのエニュメレート・オブジェクトを取得したりすることができます。

Direction.EAST 
Direction.valueOf("EAST"); 
Direction.values() 
指定された名前がエニュメレート・クラスにマッチしていない場合、valueOf()メソッドはパラメータ異常を投げます。
Kotlinの核の対象に関する内容をここに紹介します。関連コードはgithubに提出されています。
本文のソースコードのダウンロード:http://xiazai.jb51.net/201706/yuanma/helloKotlin-master(jb 51.net)rar
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。