#一级构造函数 二级构造函数
// An highlighted block
class AnimalMain(name:String){
init {
println("一级构造函数")
}
constructor(name:String,age:Int):this(name){
println("二级构造函数")
}
constructor(age:Int,name:String,color:Int):this(name)
}
#内部内
// An highlighted block
class Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}
val demo = Outer().Inner().foo() // == 1
#抽象方法
// An highlighted block
```javascript
// An highlighted block
var foo = 'bar';
#枚举
// An highlighted block
fun test(){
val flower = Tree.Flower("荷花")
flower.getName()
Tree("向日葵").Fruit("apple")
}
class Tree(var treeName:String){
class Flower(var flowerName:String){//嵌套类
fun getName():String{
return "荷花"
}
}
inner class Fruit(var name:String){//内部类
}
}
fun testEnum(){
val seasonName = Season.SPRING.seasonName
}
enum class Season(val seasonName:String){
SPRING("春天"),
SUMER("夏天"),
AUTUMN("秋天"),
WINTER("冬天")
}
#密封类
// An highlighted block
sealed class SeasonSealed{
class Spring(var name:String)
class Sumer(var name:String)
class Autum(var name:String)
class Winter(var name:String)
}
//复制类
// An highlighted block
fun testDataClass(){
// DataClass("hello").age
val dataClass = DataClass("apple")
val name = dataClass.name
val copy:DataClass = dataClass.copy(name = "pear")
data class DataClass(var name: String){
// val age:Int = 1
constructor( age: Int):this("java")
}
}
#模板
class River<T>(var name:String,var length:T){
fun getInfo():String{
var unit:String = when(length){
is String -> "米"
is Number -> "m"
else -> ""
}
return "${name}长度是$length$unit"
}
}