Inheritance/Multiple: Difference between revisions

Content added Content deleted
(Kotlin snippet updated)
Line 554: Line 554:
to be abstract or to provide accessor implementations.
to be abstract or to provide accessor implementations.


<lang scala>package multiple_inheritance
<lang scala>interface Camera {

interface Camera {
val numberOfLenses : Int
val numberOfLenses : Int
}
}
Line 562: Line 560:
interface MobilePhone {
interface MobilePhone {
fun charge(n : Int) {
fun charge(n : Int) {
if (n >= 0) {
if (n >= 0)
battery_level += n
battery_level = (battery_level + n).coerceAtMost(100)
if (battery_level > 100) battery_level = 100
}
}
}


Line 576: Line 572:
fun main(args: Array<String>) {
fun main(args: Array<String>) {
val c = CameraPhone(1, 50)
val c = CameraPhone(1, 50)

println(c)
println(c)
c.charge(35)
c.charge(35)
println(c)
c.charge(78)
println(c)
println(c)
println(listOf(c.javaClass.superclass) + c.javaClass.interfaces)
println(listOf(c.javaClass.superclass) + c.javaClass.interfaces)
Line 588: Line 585:
<pre>CameraPhone(numberOfLenses=1, battery_level=50)
<pre>CameraPhone(numberOfLenses=1, battery_level=50)
CameraPhone(numberOfLenses=1, battery_level=85)
CameraPhone(numberOfLenses=1, battery_level=85)
CameraPhone(numberOfLenses=1, battery_level=100)
[class java.lang.Object, interface multiple_inheritance.Camera, interface multiple_inheritance.MobilePhone]
[class java.lang.Object, interface multiple_inheritance.Camera, interface multiple_inheritance.MobilePhone]
TwinLensCamera(numberOfLenses=2)
TwinLensCamera(numberOfLenses=2)