kotlin的 類,繼承,過載,抽象類,建構函式

2021-07-25 19:40:36 字數 3287 閱讀 9702

一、類宣告

使用class關鍵字宣告類,檢視其宣告格式:

: modifiers ("class" | "inte***ce") ******name

typeparameters?

primaryconstructor?

(":" annotations delegationspecifier)?

typeconstraints

(classbody? | enumclassbody)

最簡略的類宣告至少包括 modifiers class ******name,如:

class

empty

modifiers

包括classmodifier和_accessmodifier_:

可以宣告乙個主建構函式(primary constructor)和多個次級建構函式(secondary constructor),二者都是可選的。

primary constructor宣告

作為類宣告的頭部存在,類宣告結構:

class user constructor(name

:string)

當constructor前無修飾符(如:private)時,constructor可以省略:

class user(name

:string)

當是無參建構函式時,整個建構函式部分也可以省略,省略的建構函式預設是public的:

class

user

primary constructor 初始化

由於primary constructor不能包含任何**,因此使用init**塊對其初始化,同時可以在初始化**塊中使用建構函式的引數:

class

user(name:string)

}

可以類中初始化屬性:

class

user(name:string)

secondary constructor宣告

使用constructor字首宣告,且必須呼叫primary constructor,使用this關鍵字:

class

user(name:string)

}

宣告建構函式時,允許指定引數預設值,若所有引數都被指定預設值然後編譯,編譯器會生成乙個額外的無參建構函式來使用初始化屬性為初始值。

class user(name

:string = "")

作為校驗,上述宣告方式允許如下呼叫:

var user = user()

var anotheruser = user("jason")

若建構函式中並非所有引數都有預設值,則不會生成預設無參建構函式:

class

user(name:string = "",age = int)

var user = user() //將無法編譯通過

var anotheruser = user("jason",18) //合法宣告

無需new關鍵字,即可例項化物件:

var user = user()
any

所有類都繼承該類,提供預設的三個函式:

equals()

hashcode()

tostring()

繼承宣告

在類的建構函式之後使用:標示繼承:

class

student

(name:string,age:int):user(name,age)

當類未宣告建構函式時,繼承其他類時,也不需要在primary constructor中顯示的宣告建構函式,必須在secondary constructor中顯示呼叫父類建構函式,若父類有多個建構函式,可選擇其一進行呼叫:

/**使用者基類**/

open class

user(name:string)

}/**子類繼承user類**/

class

student:

user

/**另外乙個建構函式**/

constructor(name:string,age:int):super(name,age)

}

所有類定義時預設是final屬性,不可被繼承。若需要繼承,使用open關鍵字進行修飾。

方法過載

open class

user

fun run(){}

}class

student:user

}

final

override fun study(){}

過載規則
open class

user

}inte***ce reading

}class

student:

user(),reading

}

當介面未實現方法時,預設為父類user的study方法,不需要呼叫所繼承的方法:

inte***ce

reading

class student:user(),reading

}

抽象類

kotlin中的抽象類允許有abstract修飾的成員方法,非抽象類不允許有抽象方法;

abstract

class

user

class

person

抽象類預設是可被繼承的,介面是特殊的抽象類,允許有抽象方法:

inte***ce

reading

Kotlin物件 抽象類

抽象類寫法如下 物件 抽象類 能很好的使用它進行後期 的解耦和維護 具體實現 在需要繼承實現的類去賦值的屬性前和實現的方法前面加上abstract修飾符,免去open abstract class news繼承類寫法如下 package com.init.demo.model 物件 抽象類實現 抽象...

Kotlin筆記繼承 抽象類 介面(六)

kotlin筆記資料型別 一 kotlin筆記字串 二 kotlin筆記運算子 三 kotlin筆記函式 四 kotlin筆記物件導向 五 二 抽象類 三 介面 子類的主建構函式繼承父類的主建構函式,那麼子類的次建構函式不能直接呼叫父類的建構函式 子類主構造函式呼叫父類主建構函式 定義父類 open...

繼承,重寫,抽象類多型定義的格式

1.繼承 public class animal public void sleep public void activity public class cat extends animal public class test 2.在子類中,訪問父類中的成員方法格式 super.父類中的成員方法 p...