오늘은 어제에 이어서 상속의 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 클래스 => UnivFriend 클래스와 ComFriend 클래스에 공통 규약을 적용하기 위해 정의된 클래스.
상속이란 이렇게 쓰는 것이다.
굿!!
내일은 Object 클래스와 final 선언 그리고 @Overide에 대해서 알아본다.
오늘의 코멘트: 굿상속! 그리고 잠을 잘못자서 목이 안돌아간다..