Module CheckIt { Class Camera { Private: cameratype$ Class: module Camera (.cameratype$){ } } \\ INHERITANCE AT CODE LEVEL Class MobilePhone { Private: model$ Class: module MobilePhone (.model$) { } } Class CameraPhone as Camera as MobilePhone { Module CameraPhone ( .model$, .cameratype$) { } } CP1 =CameraPhone("X-15", "OBSCURE") Print CP1 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$ Else Print "Nothing to print" 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 ' like c++ Module CheckIt { Class Camera { Property cameratype$ { value, set { read value$ if value$="" then Error "Null value not accepted" } } Class: module Camera (.cameratype$){ } } \\ INHERITANCE AT CODE LEVEL Class MobilePhone { Property model$ { value, set { read value$ if value$="" then Error "Null value not accepted" } } Class: module MobilePhone (.model$) { } } Class CameraPhone { { ' these are local variables, not object's variables Read model$, cameratype$ } ' we use these variable$ here: Camera Gadget(model$) MobilePhone Device(cameratype$) } ' you can't pass null CP1=CameraPhone("X-15", "OBSCURE") Print CP1 is type CameraPhone = true Print CP1 is type Camera = false Print CP1 is type MobilePhone = false Print CP1.Device.model$;" "; CP1.Gadget.cameratype$ Try ok { ' we get error CP2=CameraPhone("X-15", "") } If Error Then Print Error$ } CheckIt