ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 다형성 (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

    댓글

Designed by Tistory.