#!/usr/bin/env fun /* * This file is part of the Fun programming language. * https://fun-lang.xyz/ * * Copyright 2025 Johannes Findeisen * Licensed under the terms of the Apache-2.0 license. * https://opensource.org/license/apache-2-0 * * Added: 2025-10-01 */ /* * Inheritance demo: * - Child extends Parent * - Parent initializes fields in its constructor * - Child overrides/extends behavior and fields */ print("=== inheritance demo ===") class Parent(number start) value = 0 fun _construct(this, s) this.value = s fun describe(this) return "Parent(value=" + to_string(this.value) + ")" fun hello(this) return "Hello from Parent()" class Child(number start) extends Parent bonus = 5 fun _construct(this, s) // child's constructor runs after parent's fields were merged this.value = this.value + this.bonus fun describe(this) return "Child(value=" + to_string(this.value) + ", bonus=" + to_string(this.bonus) + ")" p = Parent(10) print(p.describe()) // expect: Parent(value=10) c = Child(10) print(c.describe()) // expect: Child(value=15, bonus=5) print(c.hello()) print("=== done ===") /* Expected output: === inheritance demo === Parent(value=10) Child(value=15, bonus=5) Hello from Parent() === done === */