Inheritance/Multiple: Difference between revisions

(Added Wren)
Line 929:
Module CheckIt {
Class Camera {
IamCameraPrivate:
M=Thiscameratype$
Class: This=M
module Camera (.cameratype$){
M=Camera()}
}
\\ INHERITANCE AT CODE LEVEL
Class MobilePhone {
Private:
IamMobilePhone
model$
Class:
module MobilePhone (.model$) {
}
}
Class CameraPhone as Camera as MobilePhone {
Module CameraPhone ( .model$, .cameratype$) {
\\ we can use : This=Camera() : This=MobilePhone()
\\ but we have to use Final for Functions/Modules in This
\\ So using M, a new local variable, we can accumulate Inheritance
M=Camera()
M=MobilePhone()
M=This
This=M
}
}
CP1 =CameraPhone("X-15", "OBSCURE")
Print Valid(CP1.IamCamera)=True, Valid(CP1.IamMobilePhone)is type CameraPhone = true
Print CP1 is type Camera = true
Print CP1 is type MobilePhone = true
 
\\ INHERITANCE AT OBJECT LEVEL
CP2 = MobilePhone("X-9") with Camera("WIDE")
\\ CP3 has no type
Group CP3 {
Module PrintAll {
If this is type Camera and this is type MobilePhone then
Print .model$, .cameratype$
IamMobilePhone Else
Print "Nothing to print"
M=MobilePhone() End if
}
}
CP3.PrintAll ' Nothing to print
\\ using pointers and prepate inheritance at object level
CP->(CP1 with CP3)
CP=>PrintAll
CP->(CP2 with CP3)
CP=>PrintAll
}
CheckIt
404

edits