익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
자바 다형성
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
자바 다형성(Java Polymorphism, 多形性)은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 동일한 인터페이스나 상위 클래스 타입을 통해 서로 다른 클래스의 객체를 일관되게 다룰 수 있는 성질을 의미한다. ==개요== 다형성은 "하나의 인터페이스로 여러 형태의 객체를 처리할 수 있다"는 원리를 바탕으로 하며, 코드의 유연성과 확장성을 크게 향상시킨다. 자바에서는 주로 메서드 오버라이딩과 업캐스팅을 통해 다형성을 구현한다. ==다형성의 종류== *컴파일 타임 다형성 (정적 다형성): 메서드 오버로딩을 통해 구현 *런타임 다형성 (동적 다형성): 메서드 오버라이딩 및 업캐스팅을 통해 구현 ==예제: 런타임 다형성== <syntaxhighlight lang="java"> class Animal { void sound() { System.out.println("동물이 소리를 냅니다."); } } class Cat extends Animal { @Override void sound() { System.out.println("야옹!"); } } class Dog extends Animal { @Override void sound() { System.out.println("멍멍!"); } } public class Main { public static void main(String[] args) { Animal a1 = new Cat(); Animal a2 = new Dog(); a1.sound(); // 출력: 야옹! a2.sound(); // 출력: 멍멍! } } </syntaxhighlight> ==업캐스팅과 다운캐스팅== *업캐스팅(Upcasting): 하위 클래스 객체를 상위 클래스 타입으로 참조 *다운캐스팅(Downcasting): 상위 클래스 타입의 참조를 하위 클래스 타입으로 변환 (명시적 캐스팅 필요) <syntaxhighlight lang="java"> Animal a = new Dog(); // 업캐스팅 Dog d = (Dog) a; // 다운캐스팅 d.sound(); // 출력: 멍멍! </syntaxhighlight> ==인터페이스를 통한 다형성== 자바 인터페이스를 활용하면 클래스 간의 강한 결합을 피하면서 다형성을 구현할 수 있다.<syntaxhighlight lang="java"> interface Speaker { void speak(); } class Human implements Speaker { public void speak() { System.out.println("사람이 말합니다."); } } class Robot implements Speaker { public void speak() { System.out.println("로봇이 말합니다."); } } public class Main { public static void main(String[] args) { Speaker s1 = new Human(); Speaker s2 = new Robot(); s1.speak(); // 출력: 사람이 말합니다. s2.speak(); // 출력: 로봇이 말합니다. } } </syntaxhighlight> ==장점== *코드의 재사용성 증가 *시스템 확장성 향상 *인터페이스 기반 설계 가능 *실행 시간에 객체에 따라 다른 동작 수행 가능 ==관련 키워드== *오버라이딩 *오버로딩 *업캐스팅 *인터페이스 *동적 바인딩 ==같이 보기== *[[자바 오버라이딩]] *[[자바 오버로딩]] *[[자바 인터페이스]] *[[자바 클래스]] *[[객체 지향 프로그래밍]] ==참고 문헌== *Joshua Bloch, *Effective Java*, Addison-Wesley, 2018. *Herbert Schildt, *Java: The Complete Reference*, McGraw-Hill Education, 2021. ==각주== [[분류:자바]] [[분류:프로그래밍]] [[분류:객체 지향]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록