class A is abstract def foo pass def bar1 is abstract def bar2 as int is abstract pro prop1 as int is abstract get prop2 as int is abstract set prop3 as int is abstract # TODO: # pro [x as int, y as int] as int is abstract # get # set class B inherits A def bar1 is override pass def bar1(x as int) # no override required since this is an overload pass def bar2 as int is override return 2 pro prop1 as int is override get return 1 set pass get prop2 as int is override return 2 set prop3 as int is override pass # pro [x as int, y as int] as int is override # get # return x + y # set # pass class Test def main is shared b = B() b.bar1 assert b.bar2 == 2 assert b.prop1 == 1 b.prop1 = 1 assert b.prop2 == 2 b.prop3 = 3