210131_JAVA_상속 챕터 3

정재현·2021년 1월 31일
0

TIL

목록 보기
61/80

오늘은 어제에 이어서 상속의 3번째 챕터에 들어간다.
상속의 마지막 챕터이다.
상속이 도움이 되는 상황을 소개하며 시작하는데,
인맥 관리 프로그램을 예로 든다.

대학 동창과 직장 동료의
{이름, 전공(or 부서), 전화번호 정보 저장} 를 관리하는 것이 목적인 코드인데.

예로 든 코드는, UnivFreind class, ComFriend class 따로 두개의 클래스에 각각 생성자를 통하여
이름, 전공(or 부서), 전화번호를 넣었고 showInfo()라는 메서드를 통해 정보들을 출력해주었다.
그리고 main코드에서 각각

UnivFriend[] ufrns = new UnivFriend[5];
int ucnt = 0;

ComFriend[] cfrns = new ComFriend[5];
int ccnt = 0;

ufrns[ucnt++] = new UnivFriend("Lee", "computer", "010-0000-0000");
cfrns[ccnt++] = new ComFriend("Kee", "R&D", "010-1111-1110");

그 뒤 for문을 통해 각각 정보를 출력해주는 코드다.
인스턴스를 저장하는 배열이 2개이고, 대학동창과 직장동료의 정보를 저장하는 과정이 나뉜다.
for문에도 나뉜다.

만약 "정재현"이라는 특정 이름을 검색하려면 두개의 배열을 모두 검색해줘야 할 것이다.
지금은 2개지만 만약 관리해야할 목록들이 더 많아진다면...?
이웃, 동창회모임, 고등학교친구들 등등..
이런 상황에 상속의 참의미를 사용할 수 있다.

연관된 일련의 클래스들에 대해 공통적인 규약을 정의할 수 있습니다.

상속은 UnivFriend 클래스와 ComFriend 클래스의 공통적인 규약을 정의하도록 돕는다.
쉽게말해서 하나의 배열에 데이터를 저장하고, 하나의 메소드 또는 하나의 반복문으로 데이터의 삭제 및 검색이 가능하게 한다는 의미이다.

그러니깐, 한마디로 두개 이상의 행위를 하나의 행위로 간편하게 할 수 있다는 점이다.
아~~~주 유용하고 간편하고 효율성있는 부분이라고 할 수 있다!
물론 내 생각에는 이렇게 하나로 합쳐도 되는 부분은 합치고 나뉠수 있는 부분은 나뉘는게 좋다고 생각
(당연한 말이긴 하지만, 센스가 필요한 부분이다.)

상속을 활용한 코드는
github: https://github.com/jeong-jaehyeon/JavaProject/blob/javaExercise/src/MyFriend.java
여기에서!

이렇게 두개의 클래스를 Friend 클래스에 상속되게 함으로써 다음과 같은 효과를 얻었는데,

  • 인스턴스를 저장하는 배열이 하나로.
    -> Friend 클래스를 상속하는 클래스가 추가되어도(고딩동창, 동호회 등등) 이 사실을 변함이 없다.
  • 정보를 저장하는 과정이 나뉘지 않는다.
    ->하나의 배열에 모든 인스턴스를 저장할 수 있다.
  • 저장된 정보를 모두 출력할 때 하나의 for문으로도 충분하다.
    ->하나의 배열이 사용되었고 또 메소드 오버라이딩 (showInfo(); )이 도움이 되었다.

지금 이 상황은

Friend 클래스 => UnivFriend 클래스와 ComFriend 클래스에 공통 규약을 적용하기 위해 정의된 클래스.

상속이란 이렇게 쓰는 것이다.
굿!!
내일은 Object 클래스와 final 선언 그리고 @Overide에 대해서 알아본다.

오늘의 코멘트: 굿상속! 그리고 잠을 잘못자서 목이 안돌아간다..

profile
"돈받고 일하면 프로다"

0개의 댓글