다형성

자바에서 추상 클래스(Abstract Class)와 인터페이스(Interface)는모두 “설계도”처럼 동작합니다.하지만 목적과 사용 방법은 다릅니다.이번 글에서는 두 개념의 차이를 비교 중심으로 쉽게 정리해보겠습니다! 추상 클래스와 인터페이스란?자바에서 코드를 설계할 때,공통된 기능이나 규칙을 미리 정해두고 싶을 때 사용하는 것이 바로✅ 추상 클래스와 인터페이스입니다.둘 다 객체를 만들 수는 없지만,“어떤 기능이 필요하다”는 규칙을 미리 정해주는 역할을 합니다.추상 클래스는 "일부 기능을 직접 제공하면서 나머지는 자식에게 맡기고 싶을 때"인터페이스는 "**기능 이름만 약속하고, 구현은 전적으로 자식에게 맡기고 싶을 때" 👇 자세한 내용은 아래 글을 확인해주세요! 추상 클래스 [Java] 28. 추상..
인터페이스란? 클래스가 어떤 기능을 반드시 구현해야 하는지 정해놓은 설계도입니다.메서드의 형태(이름, 매개변수, 리턴 타입)만 정의하고, 구현은 하지 않음클래스가 인터페이스를 implements(구현) 하면, 그 안의 메서드를 무조건 오버라이딩 해야 합니다.쉽게 말하면,"이런 기능이 필요해! 하지만 어떻게 만들지는 네가 알아서 해"👉 이런식으로 필요한 클래스에게 강제로 만들게 하는거죠! 문법* 인터페이스 (설계도)interface 인터페이스명 { 반환타입 메서드이름(매개변수);}interface 키워드로 선언메서드의 "이름만" 정의하고, 실제 내용(구현)은 없음모든 메서드는 기본적으로 public abstract (생략해도 자동으로 붙음)클래스에게 "이 메서드는 꼭 만들어!" 라고 기능을 강제하..
다형성을 이해했다면, 다음으로 꼭 짚고 넘어가야 할 개념이 있습니다.바로 업캐스팅, 다운캐스팅, 그리고 instanceof 연산자입니다.이들은 다형성이 실제로 코드에서 어떻게 동작하는지를 결정짓는 핵심 키워드들입니다. 업캐스팅 (Upcasting) 자식 클래스의 객체를 부모 클래스 타입으로 참조하는 것입니다.자동으로 형변환되며, 명시적인 캐스팅 없이도 가능합니다. 예시 코드* Animal 클래스 (부모 클래스)class Animal { public void sound() { System.out.println("동물이 소리를 냅니다."); }}* Dog 클래스 (자식 클래스)class Dog extends Animal { @Override public void soun..
다형성이란?✅ 하나의 부모 클래스(또는 인터페이스)로 여러 형태의 자식 객체를 다룰 수 있는 것 즉, 같은 메서드 호출이지만, 객체에 따라 서로 다른 방식으로 동작하는 것을 말합니다. 다형성의 조건상속 (Inheritance) : 부모 클래스를 자식 클래스가 상속받아야 함오버라이딩 (Overriding) : 자식 클래스가 부모의 메서드를 자신에게 맞게 재정의업캐스팅 (Upcasting) : 자식 객체를 부모 타입으로 다룸 다형성의 필요성필요성예시 코드의 재사용성 증가 같은 타입으로 다양한 객체 처리 가능유지보수 쉬움객체만 바꿔치기 해도 동작 변경 가능확장성이 뛰어남새로운 클래스가 추가되어도 기존 코드 수정 거의 없음인터페이스 기반 설계 가능전략 패턴, 의존성 주입, 프레임워크 적용 등 실무 핵심에 사..
오버라이딩이란?부모 클래스에 정의된 메서드를 자식 클래스에서 ‘다시 정의(재정의)’하는 것을 말합니다. 자식 클래스가 부모 클래스의 메서드를 그대로 사용하는 것이 아니라, 자기 상황에 맞게 메서드의 내용(기능)을 바꿔서 사용할 수 있게 해주는 기능입니다.  오버라이딩의 필요성상속을 통해 부모의 기능을 물려받았지만, 자식 클래스 입장에서는 동작 방식이 다를 때 오버라이딩을 사용합니다. 예를 들어,Animal이라는 클래스의 sound() 메서드는 “동물이 소리를 냅니다.”라고 되어 있습니다.Dog 클래스는 "멍멍!"으로 출력하고 싶습니다.Cat 클래스는 "냐옹!"으로 출력하고 싶습니다.➡ 각 클래스에서 sound()를 오버라이딩하면 됩니다! * Animal 클래스 - 부모 클래스public class Ani..
WooZzing
'다형성' 태그의 글 목록