class Lateinit{ //延时初始化
// lateinit val name:Val_var
lateinit var name:Lateinit
fun initName(){
name = Lateinit()
}
}
fun nullString(){
val name:String? = "zhangsan"
val age:Int? = 12
println(name?.trim())
println(name?:age)
println(name as? String)
println(name as? Int)
}
//1.构造函数
class AnimalMain(name:String){
init { //init属于一级构造函数的函数体
println("一级构造函数")
}
//2.二级构造
constructor(name: String, age: Int) : this(name) {
println("二级构造函数")
}
constructor(age: Int,name: String,color:Int):this(name)
}
class Book @JvmOverloads constructor(name:String){
init {
println("一级构造函数")
}
constructor():this("java")
}
class Fruit(price:Double){
constructor(name:String):this(2.0)
}
class Person(name:String,age: Int = 12){
companion object Student{
fun run(){
println("跑步")
}
}
}
//3.抽象类
abstract class Chiken(name:String,sex:Int,var voice:String){
abstract fun callOut()
}
class Coco(name: String = "唐老鸭", sex: Int, voice: String) : Chiken(name, sex, voice) {
override fun callOut() {
}
}
interface Behvior{
fun fly()
}
fun test(){
val flower = Tree.Flower("荷花")
flower.getName()
Tree("向日葵").Fruit("apple")
}
//4.嵌套类
class Tree(var treeName:String){
class Flower(var flowerName:String){//嵌套类
fun getName():String{
return "荷花"
}
}
//5.内部类
inner class Fruit(var name:String){//内部类
}
}
fun testEnum(){
val seasonName = Season.SPRING.seasonName
}
enum class Season(val seasonName:String){
SPRING("春天"),
SUMER("夏天"),
AUTUMN("秋天"),
WINTER("冬天")
}
sealed class SeasonSealed{
class Spring(var name:String)
class Sumer(var name:String)
class Autum(var name:String)
class Winter(var name:String)
}
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"
}
}
Kotlin特殊类
最新推荐文章于 2023-02-22 08:22:04 发布