class A private: var k : integer; public: proc get_A() : integer begin return self.k; end proc set( k : integer ) begin self.k = k; end proc init() begin self.set(0); end end class B subclassOf A private: var k : integer; public: proc get_B() : integer begin return self.k; end proc init() begin super.init(); self.k = 2; end end class C subclassOf A public: proc get_A() : integer begin return 0; end end class Program public: proc run() var a : A; b : B; c : C; begin b = B.new(); write( b.get_B() ); a = b; write( a.get_A() ); write( b.get_A() ); // vai para método get_A da classe A a = c; write( a.get_A() ); // vai para o método get_A da classe A c = C.new(); write( c.get_A() ); // vai para método get_A da classe C end end