class ParentClass class ChildClass: ParentClass() fun ParentClass.greeting() = println("hello!") ParentClass().greeting() >> hello! ChildClass().greeting() >> hello!
class ParentClass class ChildClass: ParentClass() fun ParentClass.greeting() = println("hello!") fun ChildClass.greeting() = println(“good bye!”) ParentClass().greeting() >> hello! ChildClass().greeting() >> good bye!
class ParentClass class ChildClass: ParentClass() fun ParentClass.greeting() = println("hello!") fun ChildClass.greeting() = println(“good bye!”) fun printGreeting(obj: ParentClass) { obj.greeting() }
class ParentClass class ChildClass: ParentClass() fun ParentClass.greeting() = println("hello!") fun ChildClass.greeting() = println(“good bye!”) fun printGreeting(obj: ParentClass) { obj.greeting() } printGreeting(ChildClass()) >> hello!
class ParentClass class ChildClass: ParentClass() fun ParentClass.greeting() = println("hello!") fun ChildClass.greeting() = println(“good bye!”) fun printGreeting(obj: ParentClass) { obj.greeting() } printGreeting(ChildClass()) >> hello! このクラスに対して静的に解決される
class MyClass{ val Int.seconds get() = this * 1000 val Int.minutes get() = this.seconds * 60 } class SubClass: MyClass(){ fun calc(){ val s = 20.seconds } } サブクラス内でも使⽤可能
MyInterface{ val Int.seconds get() = this * 1000 val Int.minutes get() = this.seconds * 60 } class MyClass : MyInterface{ fun calc(){ val s = 20.seconds } } interfaceを実装したクラス内で使⽤可能