// 🔥 FromCall実装テスト - Override + From統一構文によるデリゲーション革命 // 親クラス定義 box Animal { init { name, sound } constructor() { me.name = "Unknown Animal" me.sound = "Silent" } constructor(animalName) { me.name = animalName me.sound = "Unknown Sound" } makeSound() { local console console = new ConsoleBox() console.log(me.name + " makes " + me.sound) return me.sound } getName() { return me.name } } // 子クラス定義(デリゲーション関係) box Dog : Animal { init { breed } constructor() { // 親コンストラクタを呼び出し from Animal.constructor() me.sound = "Woof!" me.breed = "Mixed" } constructor(dogName, dogBreed) { // 引数付き親コンストラクタを呼び出し from Animal.constructor(dogName) me.sound = "Woof!" me.breed = dogBreed } // override: 親メソッドをオーバーライド makeSound() { // 親メソッドを呼び出し local parentSound parentSound = from Animal.makeSound() // 追加の処理 local console console = new ConsoleBox() console.log("This is a " + me.breed + " breed!") return parentSound } getBreed() { return me.breed } // 親のgetNameを呼び出すテスト getFullInfo() { local parentName parentName = from Animal.getName() return parentName + " (" + me.breed + ")" } } // 静的メインクラス static box Main { init { console } main() { me.console = new ConsoleBox() me.console.log("🔥 FromCall Implementation Test Starting...") // テスト1: デフォルトコンストラクタ local dog1 dog1 = new Dog() me.console.log("Test 1 - Default Constructor:") dog1.makeSound() me.console.log("Name: " + dog1.getName()) me.console.log("Breed: " + dog1.getBreed()) me.console.log("") // テスト2: 引数付きコンストラクタ local dog2 dog2 = new Dog("Buddy", "Golden Retriever") me.console.log("Test 2 - Parameterized Constructor:") dog2.makeSound() me.console.log("Full Info: " + dog2.getFullInfo()) me.console.log("") // テスト3: 親メソッド直接呼び出し me.console.log("Test 3 - Direct parent method call:") local directAnimal directAnimal = new Animal("Cat") directAnimal.makeSound() me.console.log("🎉 FromCall Implementation Test Completed!") return "FromCall Revolution Success!" } }