-
다형성 (Polymorphism)CS/개발 언어 (JAVA) 2021. 4. 5. 00:28
정의
- 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미
- 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미
예시
public class A { public void x() { System.out.println("A.x"); } } public class B extends A { public void y() { System.out.println("B.y"); } } public class PolymorphismDemo { public static void main(String[] args) { A obj = new B(); obj.x(); // B에 x()가 없기 때문에 A.x가 출력 obj.y(); // A에 y()가 없기 때문에 에러 } }
public class A { public void x() { System.out.println("A.x"); } } public class B extends A { public void x() { System.out.println("B.x"); } public void y() { System.out.println("B.y"); } } public class PolymorphismDemo { public static void main(String[] args) { A obj = new B(); obj.x(); // B에 x()가 오버라이딩 되었기 때문에 B.x 출력 obj.y(); // A에 y()가 없기 때문에 에러 } }
A라는 객체는 B1과 B2의 타입을 가질 수 있음
public class A { public void x() { System.out.println("A.x"); } } public class B1 extends A { public void x() { System.out.println("B1.x"); } public void y() { System.out.println("B1.y"); } } public class B2 extends A { public void x() { System.out.println("B2.x"); } public void y() { System.out.println("B2.y"); } } public class PolymorphismDemo { public static void main(String[] args) { A obj = new B1(); obj.x(); // B1에 x()가 오버라이딩 되었기 때문에 B1.x 출력 A obj2 = new B2(); obj2.x(); // B2에 x()가 오버라이딩 되었기 때문에 B2.x 출력 } }
'CS > 개발 언어 (JAVA)' 카테고리의 다른 글
[JAVA] Reactive Streams (0) 2021.05.16 [JAVA] 자바 가상 머신 (Java Virtual Machine) (0) 2021.05.12 [JAVA] JVM Memory (0) 2021.04.22 [JAVA] Garbage Collection (0) 2021.04.21 스프링의 핵심 3요소 (0) 2021.04.05