描述Dog對象:oop
package cn.kotlin.kotlin_oop08 class Dog(var name:String, var color:String) { /** * 顯示狗狗的名字 */ fun showDogName() { println("狗狗的名字是:${this.name}") } /** * 顯示狗狗的顏色 */ fun showDogColor() { println("狗狗的顏色是:${color}") } }
package cn.kotlin.kotlin_oop08 fun main(args: Array<String>) { /** * Dog("小白", "純白色") 至關於Java中的 new Dog("小白", "純白色"); */ var dog1 = Dog("小白", "純白色") dog1.showDogName() dog1.showDogColor() println("----------------------") /** * Dog("小黑", "黑色") 至關於Java中的 new Dog("小黑", "黑色"); */ var dog2 = Dog("小黑", "黑色") dog2.showDogName() dog2.showDogColor() println("----------------------") /** * 以上代碼 因爲實例化了 兩次Dog() 因此他們的引用確定是不同的,因此打印false */ println(dog1 == dog2) /** * 實例化對象10次 * 如下代碼至關於Java中 new Dog() 10次 */ Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") Dog("參數1", "參數2") }
把class Dog { 修改爲>> object Dog { 後 就屬於單例模式了,只實例化一次測試
package cn.kotlin.kotlin_oop08 /** * 把class Dog { 修改爲了>> object Dog { 後 在JVM中只會實例化一次,能夠理解爲當例模式 */ object Dog { var name:String = "" var color:String = "" /** * 顯示狗狗的名字 */ fun showDogName() { println("狗狗的名字是:${name}") } /** * 顯示狗狗的顏色 */ fun showDogColor() { println("狗狗的顏色是:${color}") } }
package cn.kotlin.kotlin_oop08 fun main(args: Array<String>) { var dog1 = Dog dog1.name = "小白" dog1.color = "純白色" dog1.showDogName() dog1.showDogColor() println("----------------------") var dog2 = Dog dog2.name = "小黑" dog2.color = "黑色" // dog2.showDogName() // dog2.showDogColor() // 也能夠這樣調用方法 Dog.showDogName() Dog.showDogColor() println("----------------------") /** * 以上代碼 因爲只實例化了1次Dog() 因此他們的引用確定是同樣的,因此打印true */ println(dog1 == dog2) /** * 永遠實例化對象一次 */ Dog Dog Dog Dog Dog Dog Dog Dog Dog Dog }