一、類宣告
使用class關鍵字宣告類,檢視其宣告格式:
最簡略的類宣告至少包括 modifiers class ******name,如:: modifiers ("class" | "inte***ce") ******name
typeparameters?
primaryconstructor?
(":" annotations delegationspecifier)?
typeconstraints
(classbody? | enumclassbody)
modifiersclass
empty
包括classmodifier和_accessmodifier_:
可以宣告乙個主建構函式(primary constructor)和多個次級建構函式(secondary constructor),二者都是可選的。
primary constructor宣告
作為類宣告的頭部存在,類宣告結構:
當constructor前無修飾符(如:private)時,constructor可以省略:class user constructor(name
:string)
當是無參建構函式時,整個建構函式部分也可以省略,省略的建構函式預設是public的:class user(name
:string)
primary constructor 初始化class
user
由於primary constructor不能包含任何**,因此使用init**塊對其初始化,同時可以在初始化**塊中使用建構函式的引數:
可以類中初始化屬性:class
user(name:string)
}
secondary constructor宣告class
user(name:string)
使用constructor字首宣告,且必須呼叫primary constructor,使用this關鍵字:
宣告建構函式時,允許指定引數預設值,若所有引數都被指定預設值然後編譯,編譯器會生成乙個額外的無參建構函式來使用初始化屬性為初始值。class
user(name:string)
}
作為校驗,上述宣告方式允許如下呼叫:class user(name
:string = "")
若建構函式中並非所有引數都有預設值,則不會生成預設無參建構函式:var user = user()
var anotheruser = user("jason")
無需new關鍵字,即可例項化物件:class
user(name:string = "",age = int)
var user = user() //將無法編譯通過
var anotheruser = user("jason",18) //合法宣告
var user = user()
any
所有類都繼承該類,提供預設的三個函式:
繼承宣告equals()
hashcode()
tostring()
在類的建構函式之後使用:標示繼承:
當類未宣告建構函式時,繼承其他類時,也不需要在primary constructor中顯示的宣告建構函式,必須在secondary constructor中顯示呼叫父類建構函式,若父類有多個建構函式,可選擇其一進行呼叫:class
student
(name:string,age:int):user(name,age)
所有類定義時預設是final屬性,不可被繼承。若需要繼承,使用open關鍵字進行修飾。/**使用者基類**/
open class
user(name:string)
}/**子類繼承user類**/
class
student:
user
/**另外乙個建構函式**/
constructor(name:string,age:int):super(name,age)
}
方法過載
open class
user
fun run(){}
}class
student:user
}
過載規則final
override fun study(){}
當介面未實現方法時,預設為父類user的study方法,不需要呼叫所繼承的方法:open class
user
}inte***ce reading
}class
student:
user(),reading
}
抽象類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...