--- id: java-polymorphism title: "Java Polymorphism" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["자바 다형성"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.9 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["java", "programming", "w3schools", "oop", "polymorphism"] raw_sources: ["https://www.w3schools.com/java/java_polymorphism.asp"] applied_in: [] github_commit: "" --- # [[Java Polymorphism]] ## 🎯 한 줄 통찰 (One-line insight) Declaring `Animal myPig = new Pig();` — parent type on the left, subclass instance on the right — is the exact mechanism that lets `myPig.animalSound()` call Pig's overridden version, not Animal's default: polymorphism means the SAME method call resolves differently depending on the actual object type, not the declared variable type. [S1] ## 🧠 핵심 개념 (Core concepts) - **Polymorphism** — "many forms"; occurs when related classes (via inheritance) implement the same method differently. [S1] - **Method overriding across subclasses** — each subclass (Pig, Dog) provides its own `animalSound()` implementation. [S1] - **Same action, different behavior** — calling `animalSound()` on different object types produces different output through one shared method name. [S1] - **Parent-typed reference to subclass instance** — `Animal myPig = new Pig();` is valid and dispatches to Pig's override. [S1] ## 📖 세부 내용 (Details) - Overridden methods: `class Animal { public void animalSound() { System.out.println("The animal makes a sound"); } } class Pig extends Animal { public void animalSound() { System.out.println("The pig says: wee wee"); } } class Dog extends Animal { public void animalSound() { System.out.println("The dog says: bow wow"); } }`. [S1] - Polymorphic dispatch: `Animal myAnimal = new Animal(); Animal myPig = new Pig(); Animal myDog = new Dog(); myAnimal.animalSound(); myPig.animalSound(); myDog.animalSound();` — each call produces the subclass-specific sound. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스에서 모순되는 정보는 발견되지 않음. ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다 — Animal/Pig/Dog 계층은 다형성 개념의 표준 교육용 예제다. [S1] ## 💻 코드 패턴 (Code patterns) Polymorphic method dispatch via parent-typed references (Java): ```java Animal myAnimal = new Animal(); Animal myPig = new Pig(); Animal myDog = new Dog(); myAnimal.animalSound(); // The animal makes a sound myPig.animalSound(); // The pig says: wee wee myDog.animalSound(); // The dog says: bow wow ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[Java Tutorial]] - **관련 개념:** [[Java Inheritance]], [[Java Super Keyword]], [[Java Abstraction]], [[Java Interface]] - **참조 맥락:** 상속 기반 메서드 오버라이딩의 활용 — super 키워드 챕터로 이어짐. ## 📚 출처 (Sources) - [S1] W3Schools — Java Polymorphism — https://www.w3schools.com/java/java_polymorphism.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "Java Polymorphism" page (Astra wiki-curation, P-Reinforce v3.1 format).