{"id":"interface-vs-implementation-inheritance-distinct-roles","text":"OO design distinguishes two kinds of inheritance with fundamentally different purposes — interface inheritance enables polymorphic substitution, while implementation inheritance shares code — and conflating them causes the encapsulation-breaking problems that motivate the composition-over-inheritance principle.","truth_value":"OUT","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["class-vs-interface-inheritance-distinction","polymorphism-definition-gof","inheritance-breaks-encapsulation"],"outlist":[],"label":"Distinguishing interface from implementation inheritance clarifies when inheritance is appropriate"}],"dependents":["interface-inheritance-enables-pattern-ecosystem"],"metadata":{"source_type":"derived","review_result":"unnecessary"},"created_at":"2026-06-17T17:53:17+00:00","updated_at":"2026-06-17T20:39:50+00:00","reviewed_at":"2026-06-17T20:39:50+00:00","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"interface-vs-implementation-inheritance-distinct-roles","truth_value":"OUT","reason":"SL justification invalid","failed_antecedents":["polymorphism-definition-gof"],"label":"Distinguishing interface from implementation inheritance clarifies when inheritance is appropriate"}]}}