foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[69. Method Overriding 심화]

Method Overriding 심화

이전 걸음에서 Method Overriding에 대해서 기본적인 내용과 간단하게 사용을 하는 방법을 배웠습니다. 하지만 그래서 이거를 사용하면 뭐가 좋은지는 의구심을 가지고 있을 수 있습니다. 그래서 이번 걸음에서 그 궁금증을 해결을 해드리겠습니다.

Method Overriding에 대한 사용에 이유와 이전 걸음에서 배웠던 참조 자료형 변환과는 어떤 연관을 가지고 있고 또한 실제로 Code를 사용하여 설명을 드리려고 합니다. 이번 걸음에서는 왜 Method Overriding을 쓰면 좋은지 확실하게 아실 수 있습니다.

Method Overriding의 사용 이유와 Method Overriding과 참조 자료형 변환을 같이 사용하는 이유 마지막으로 예제 소스를 구현을 하고 설명을 하겠습니다. 여러분들이 확실히 이해를 하기 위해서 사용하는 이유를 이번 걸음에서 확실히 알 수가 있습니다.

Method Overriding 사용 이유

메소드오버라이딩심화메인사진

이전 걸음에서 사용 방법에 대해서 이야기를 드렸지만 하나의 궁금증이 생깁니다. 상속이라는 것은 근본적으로 부모가 정의를 하거나 선언한 속성이나 기능을 자식이 가져다 쓰려고 만드는데 왜 Method Overriding을 사용해서 부모가 가지고 있는 Method를 사용하지 못하게 하는 걸까요?

부모가 정의한 메소드를 자식이 재 정의를 하면 부모의 자료형이라도 실 객체인 자식이 재정의 한 Method가 출력이 됩니다. 자식이 1명이면 차이가 없지만 자식이 여러 명이 된다면 이 Method Overriding기능은 엄청난 효과를 낼 수 있습니다. 바로 부모의 자료형으로 어떤 자식의 객체가 와도 자식 객체에 맞는 Method가 실행이 되기 때문에 굳이 실제 객체를 찾을 필요가 없어지게 됩니다.

Method Overriding과 참조 자료형 변환

Method Overriding이라는 개념이 없다고 한다면 참조 자료형 변환을 진행해서 업 캐스팅을 하거나 다운 캐스팅을 하는 것은 크게 Code를 구현을 하는데 도움이 되는 것이 없습니다. 하지만 Method Overriding의 개념이 나오면서 참조 자료형 변환과 함께 쓴다면 Code의 양을 비약적으로 줄일 수가 있습니다. Method를 자식 class만큼 만들거나 하나의 Method라고 해도 instanceof명령어를 쓰는 부분을 사용을 할 필요가 없어지게 됩니다.

  1. 부모의 자료형으로 자식 객체 받아서 기능 실행 가능
  2. 여러 자식 객체를 부모의 배열로 객체 관리가 가능해짐

위와 같은 좋은 점이 생깁니다. 다음으로는 예제 소스를 보고 확인을 해보겠습니다.

    
class A{
  void abc(){
     System.out.println("A");
  }
}
class B extends A{
  void abc(){
     System.out.println("B");
  }
}
class C extends A{
  void abc(){
     System.out.println("C");
  }
}
class D extends A{
  void abc(){
     System.out.println("D");
  }
}
class E extends A{
  void abc(){
     System.out.println("E");
  }
}

public class Test{
   static void run(A a){
         a.abc();
   }
   
   static void main(String[]args){
       B b = new B();
       C c = new C();
       D d = new D();
       E e = new E();
       run(b);
       run(c);
       run(d);
       run(e);
   }
}
    

위 소스를 보면 이전 같은 경우라면 Method를 자식의 객체의 수만큼 만들거나 지금처럼 하나의 Method지만 instanceof명령어를 사용을 했어야 했지만 Method Overriding과 참조 자료형 변환을 같이 쓰면서 Code가 간단하게 구현을 할 수 있게 됐습니다.

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나