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 = "" }
Kotlin对象初始1
最新推荐文章于 2024-07-18 09:34:01 发布