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


Kotlinの中のオブジェクト指向
対象に向ける
対象に向かう意味はよく知られていないはずですが、物事を対象に抽象化することで、プログラムの開発の難しさが大幅に簡略化されました。私たちがよく使うJava、Python、C++は対象向けのプログラミング言語です。Kotlinとjavaはよく似ています。対象に向けた言語です。Kotlinの中で最も重要な部分として、KotlinのOOPを知ることによって、この言語を知ることができます。ここでは、クラス、属性、インターフェース、オブジェクトなどの複数の面からKotlinのオブジェクト指向性を紹介します。
クラス
大部分の言語と似ています。Kotlinはクラスのキーワードとしてクラスを使っています。クラスを宣言する時、クラス名を追加する方式で実現します。

class ClassDemo{ 
 
} 
クラスを宣言する際には、少なくともクラスのキーワードと後のクラス名を含む必要があり、必要に応じてクラスヘッダ(いくつかのパラメータを宣言するために使用される)とクラス(括弧{)に含まれている内容を追加することもできます。省略することもできます。
構造関数
javaとは違って、複数のコンストラクタを含むことができますが、javaのそれぞれのコンストラクタはフラットレベルです。Kotlinは2段階に分けられています。主なコンストラクタはクラスの頭に含まれています。init法で追加の操作を行う必要があります。

//     ,constructor init     
class ClassDemo constructor(type:String){ 
 init{ 
 System.out.println(type) 
 } 
} 
主コンストラクタに入ってきたパラメータは、クラス内で属性のために値を割り当てることができます。また、直接に主コンストラクタ内で宣言することもできます。

class ClassDemo(type:String, var prop2: String = type){ 
 var prop1 = type 
} 
二段階コンストラクタにはコンストラクタが含まれていなければなりません。

class ClassDemo{ 
 constructor(type:String){ 
  System.out.println(type) 
 } 
} 
主コンストラクタのクラスについては,各二次コンストラクタが必要であるか,直接または間接的に別の二次コンストラクタを通して,主コンストラクタを代理する。同じクラスで他のコンストラクターを代理してthisキーワードを使用します。

//               
class ClassDemo(type:String){ 
 constructor(type:String, param:String):this(type){ 
  System.out.println(type + param) 
 } 
} 
主なコンストラクタがあるかどうかを宣言しても、Kotlinはコンストラクタの方法を提供しています。ある種類のコンストラクタを暴露したくない場合があります。たとえば、一例のモードを実現する場合、主なコンストラクタを処理する必要があります。

class ClassDemo private constructor(){ 
 
} 
私たちがインスタンスを作成したい場合、直接に対応するコンストラクターを呼び出して作成することができます。

var demo = ClassDemo("hello world") 
val demo = ClassDemo("hello","world") 
Kotlinでは、声明の属性にしても、例を作るにしても、2つの方法があります。varとval、valはjavaのfinalに似ています。その声明の内容は変更できません。varとvalは反対に、文の内容は読み取りも変更もできます。
引き継ぐ
Kotlinでは、すべてのクラスがデフォルトでAnyという親クラスを継承していますが、AnyはJavaのObject類と全く同じではありません。なぜなら、equals()、hashCode()とtoString()の3つの方法しかないからです。親クラスを定義したい場合は、openキーを使用する必要があります。

open class Base{ 
 
} 
そして、サブクラスではコロン「:」を使って継承します。

class SubClass : Base(){ 
 
} 
父にコンストラクタがある場合は、サブクラスの主コンストラクタで継承しなければなりません。ない場合は、主コンストラクタまたは二次コンストラクタを選択できます。

//   
open class Base(type:String){ 
 
} 
 
//   
class SubClass(type:String) : Base(type){ 
 
} 

書き換える
Kotlinでは書き換えとjavaでも違います。Kotlinはすべての操作が明確であることを提唱していますので、書き直したい方法をopenに設定します。

open fun funDemo() {} 
その後、overrideマークで書き換えを行います。

override fun funDemo() { 
 super.funDemo() 
 } 
overrideの書き換えの関数もopenです。書き換えられないことを望むなら、前にfinalタグを追加できます。

open class SubClass : Base{ 
 constructor(type:String) : super(type){ 
 
 } 
 
 final override fun funDemo() { 
 super.funDemo() 
 } 
} 
一つのクラスが同時に複数のインターフェースを継承して実装される場合、書き換え方法が親およびインターフェースに定義されている場合、super<>によって継承され得る。

//   
interface InterfaceDemo{ 
 fun funDemo(){} 
} 
 
//  Base    InterfaceDemo 
class SubClass : Base(),InterfaceDemo{ 
 final override fun funDemo() { 
 super<Base>.funDemo() 
 super<InterfaceDemo>.funDemo() 
 } 
} 

密封類
密封類は厳格な類構造を表すために用いられ、値は限定的な集合の中のいずれかのタイプしかなく、他のタイプであってはいけません。これは、エニュメレート・クラスの拡張に相当します。エニュメレート・セットのタイプは厳密に制限されていますが、エニュメレート・定数はそれぞれ一例しかありません。一方、密封類のサブクラスは、異なる状態を含む複数の例があります。密封類はクラスの前にsealed修繕符を追加する必要があります。シール類はサブクラスがありますが、シール類宣言の内部に全部嵌め込まなければなりません。

//    
sealed class Expr { 
 class Const(val number: Double) : Expr() 
 class Sum(val e1: Expr, val e2: Expr) : Expr() 
 object NotANumber : Expr() 
} 
Kotlinのクラスに関する使用法をここに紹介します。文の中の完全なコードはgithubを参照してください。Kotlinにおけるオブジェクト指向(二)では、属性やインターフェースなどのオブジェクト指向過程でも共通の内容を紹介します。
文章コードのダウンロード:http://xiazai.jb51.net/201706/yuanma/helloKotlin-master(jb 51.net)rar
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。