实例接口1:
package com.init.demo.`interface` /** * 接口:属性抽象 */ interface PersonInterface{ var name:String var age:Int var height:Double var weight:Double }
实力接口实现类1:
package com.init.demo.interfaceimpl import com.init.demo.`interface`.PersonInterface /** * 类的内部对接口的属性进行了赋值,是的接口中原本抽象的属性具体化了 * 实例化某个属性并将它具体化的时候要加上override修饰符 */ class PersonInterfaceInpl : PersonInterface{ override var name: String ="小明" // get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. // set(value) {} override var age: Int = 19 // get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. // set(value) {} override var height: Double = 176.32 // get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. // set(value) {} override var weight: Double =128.56 // get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. // set(value) {} }
实例接口2:
package com.init.demo.`interface` /** * 接口声明属性并提供getter */ interface PersonInterface1 { val name: String get() = "" val age: Int get() = 0 val height: Double get() = 0.0 val weight: Double get() = 0.0 }
实力接口实现类2:
package com.init.demo.interfaceimpl import com.init.demo.`interface`.PersonInterface1 /** * 接口声明属性并提供了getter * 所以,不需要在实现类中进行赋值,提供setter或者getter * 相当于,在访问该实现类的属性时,会默认传回在接口中属性的getter的值 */ class PersonInterfaceInplOne : PersonInterface1 { } fun main(args: Array<String>) { val personInterfaceInplOne = PersonInterfaceInplOne() println(personInterfaceInplOne.age) println(personInterfaceInplOne.height) println(personInterfaceInplOne.weight) println(personInterfaceInplOne.name) /* 输出: 0 0.0 0.0*/ }