polymorphism 2

[JAVA & Antigravity] 인터페이스: 강한 결합을 끊고 유연함을 얻다

개발을 하다 보면 "나중에 이 모듈이 바뀔 수도 있다"는 불안감을 마주한다. 특정 기술이나 라이브러리에 의존하는 코드를 작성했다가, 요구사항 변경으로 인해 코드 전체를 뒤엎어야 했던 경험은 누구에게나 있다. 이 문제를 해결하기 위해 자바는 인터페이스라는 강력한 규격 시스템을 제공한다. 인터페이스가 해결하려는 문제와 그 진화 과정, 그리고 다형성을 통한 설계의 유연성에 대해 정리한다.1. 문제 상황: 구체적인 것에 의존하다온라인 쇼핑몰의 결제 시스템을 개발한다고 가정한다. 초기 요구사항은 '신용카드' 결제만 지원하는 것이었다. 개발자는 별다른 고민 없이 CreditCard 클래스를 만들고, 주문 로직에서 이를 직접 가져다 썼다.// 구체 클래스public class CreditCard { public..

Dev Study/Java 2026.02.05

[Java] 다형성과 추상 클래스: if문의 늪에서 탈출하기

반복되는 instanceof 검사를 없애고, 확장 가능한 코드를 만드는 법Date: 2026-01-21Environment: Windows 11, VS Code, JDK 17Topic: Polymorphism, Abstract Class, Dynamic BindingPhase 1: 리모컨이 너무 많아 (Bad Code)최신 스마트 홈 시스템을 개발한다고 가정해보자. TV, 에어컨, 공기청정기 등 수많은 가전제품(Device)을 한 번에 제어해야 한다. 하지만 다형성을 모르는 개발자는 제품마다 제각각인 메서드 이름을 사용한다.// 규격이 없는 혼란스러운 상태class TV { void turnOnTV() { System.out.println("TV 켜짐"); }}class AirCon { voi..

Dev Study/Java 2026.01.21