정보처리기사_실기17_Java03

박하영·2022년 4월 9일
0
post-thumbnail

Java Programming 03 (상속의 다형성, 오버라이딩)

상속(Ingeritance)

  • 상속을 하는 가장 큰 이유는 "재 활용성의 극대화"이다. 글로벌 프렌차이즈 기업에서는 위의 사진 예제처럼 기본 메뉴의 통일성을 가지면서도 각 나라의 식 문화나 환경에 따라서 맥주를 끼워판다거나 밥류나 다른 사이드 메뉴를 끼워파는 형태로 메인 메뉴인 치킨은 똑같지만 메뉴의 구성이 나라마다 다를 수 있다는 것 이다.

  • 상속 예제1)

myDog 클래스를 she라는 객체(주소)를 통해서 참조할 수 있는데, she.bark()라는 문장으로 she를 통해 myDog의 bark()메소드를 사용하겠다는 문장에서 myDog에는 bark라는 메소드가 존재하지 않아서 에러가 나야하지만, 그 위에 상속받은 클래스까지 확인을 해서 호출해오는 것 이다.
SYSO안에 있는 구문인 she.species나 she.myDogName도 마찬가지로 에러 없이 접근하고, 호출할 수 있다.

  • 상속 예제2) - 1번과 동일한 메커니즘.

 

오버라이딩(Overriding)

  • 오버라이딩 예제1)

a는 Animal 클래스를 가르키고, b는 Dog 클래스와 Animal 클래스의 겹치는 메소드인 Move()만 가르킨다. 즉 Dog 클래스의 Move() 메소드를 지칭한다고 보면된다.

 

-> 그렇다면, 코드 실행 값은?

a.move()는 "동물은 움직입니다."가 실행되고, b.move()는 "강아지는 걷고 뜁니다."가 실행된다. b.bark() 같은 경우에는 b가 가리키는 곳엔 animal에 있는 메소드인 move()밖에 존재하지 않으므로 실행되지 않고 에러가 발생한다.

  • 오버라이딩 예제2)

1과 크게 다르거나 특별한 부분은 없다. super.move()라고 했을 때, this는 현재 자신을 가리키는 것이고, super는 부모를 지칭한다는 부분만 확실하게 알아두면 좋다.

 

다형성(Overriding 1)


 

profile
RM_young

0개의 댓글