Kotlin对象初始1

fun main(args: Array<String>) {
    //创造实例,暨对象实例化
    val friend = Friend()
//    val friend1 = Friend("name")
    //属性引用 对象变量名.属性 = 属性类性质赋值
    //对象赋值采用引用方式
    //friend 本身不可变  对象变量名.属性 可以变
    friend.colorOfHair = "1"
    friend.wearGlasses = false
    friend.name = "第一个朋友"
    println("I  have  a  friend,  his  name  is${friend.name}, " +
            "he ${if (friend.wearGlasses) "wear" else "do not wear"} " +
            "a  glasses  and  his  color  of  hair  is ♀ ${friend.colorOfHair} , he  owe  me  ${friend.one}  money")

    //实例化对象,调用对象内部方法
    friend.printInfoMation()

    //构造器 省略掉constructor 实例化
    val friend1 = Friend1("nihao")
    friend1.time = "niaho"
    //构造器基本使用 实例化
//    val friend2 = Friend2( 1, "nihao")
    val friend2 = Friend2( "2012",1, "nihao")
    val friend3 = Friend2(age = 1, name = "nihao")
    friend2.time = "niaho,shijain"
}

//代码要写在main函数的外面
class Friend {
    //var  name :String ="" 4个部分: 1-var还是val(常亮还是变量) 2-name 变量名 3 类型 String Int Boolean Double等 4 复制部分
    var name: String = ""
    var name1 = ""//会自动推测name1(变量名)的类型
    //    var name2:String//(这个写法本身错误,但可以用构造器的方法解决)
    var name3: String? = ""//操作符?代表这个量的可有可无

    var wearGlasses: Boolean = false
    var wearGlasses1 = false
    //    var wearGlasses2:Boolean
    var wearGlasses3: Boolean? = false
    var colorOfHair: String = ""

    var one: Int = 1

    var age = 18

    /*   class  Friend constructor(name: String,age:Int){
           var name:String = name
           val age :Int = age
       }*/

    //无参构造函数 可以省略掉花括弧
    constructor()

    constructor(name: String, time: String) {
        this.name = name
        this.name3 = time
    }

    constructor(age1: Int, name2: String) {
        age = age1
        name = name2
    }


    fun printInfoMation() =
            println("Friend(name='$name', name1='$name1', name3=$name3, wearGlasses= ${if (wearGlasses) "wear" else "do not wear"}, wearGlasses1=$wearGlasses1, wearGlasses3=$wearGlasses3, colorOfHair='$colorOfHair', one=$one)")

    /**
     * 是不是成年人
     * true 是 /false 不是
     */
    fun isAdult(): Boolean = if (age >= 18) true else false


}

/**
 * 主构造函数 -- 构造器 省略掉constructor
 * 主构造函数里面要有 构造函数 需要在够着函数括号后面加: this(变量名)
 */
class Friend1(name: String) {
    var name: String = name
    var next: Int = 1
    var time = ""


}

//Use 'constructor' keyword after modifiers of primary constructor
//一旦有修饰符,主构造函数的constructor就不能省略
class Friend3 private constructor(name: String) {
    var name: String = name
    var next: Int = 1
    var time = ""


}

/**
 * 主构造函数 --构造器基本使用
 *
 */
class Friend2 constructor(age: Int, name: String) {

    //每一个次构造函数都要委托给主构造函数
    constructor(name: String, age: Int, next: String) : this(age, name) {
        friend = this
    }

    var friend: Friend2? = null

    init {
        println("You have  a  Friend  name $name ”")
    }

    var name: String = name
    var age: Int = age
    var time = ""


}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值