forked from studoverse/Kotlift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path19_interfaces.kt
74 lines (60 loc) · 1.22 KB
/
19_interfaces.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Simple Interface
interface MyInterface {
fun bar(): String
/*fun foo(): Int {
return 1
}*/
}
class Implementation : MyInterface {
override fun bar(): String {
return "2-Implementation"
}
}
// Interface + Inheritance
open class Parent {
fun three(): Int {
return 3
}
var four = 4
}
class Child: Parent(), MyInterface {
val five = 5
fun six(): String {
return "6"
}
override fun bar(): String {
return "2-Child"
}
}
// Abstract Interface + Inheritance
abstract class AbstractParent {
abstract fun three(): Int
var four = 4
}
abstract class AbstractChild: Parent() {
}
class NonAbstractChild: AbstractChild(), MyInterface {
override fun bar(): String {
return "2-NonAbstractChild"
}
}
fun main(args: Array<String>) {
// Simple Interface
val obj = Implementation()
println(obj.foo())
println(obj.bar())
// Interface + Inheritance
val child = Child()
println(child.foo())
println(child.bar())
println(child.three())
println(child.four)
println(child.five)
println(child.six())
// Abstract Interface + Inheritance
val naChild = NonAbstractChild()
println(naChild.foo())
println(naChild.bar())
println(naChild.three())
println(naChild.four)
}