본문 바로가기

# 02/Java

[윤성우 열혈자바] 16-1. 상속이 도움이 되는 상황의 소개

반응형

상속 기반의 문제 해결 : 두 클래스 상속 관계로 묶기


class Friend {

protected String name;

protected String phone;


public Friend(String na, String ph) {

name = na;

phone = ph;

}

public void showInfo() {

System.out.println( "이름 : " + name );

System.out.println( "전화 : " + phone);

}

}


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


"CompFriend와 UnivFriend 클래스에 대해 Friend 클래스라는 규약을 정의하고 적용할 수 있다."


class CompFriend extends Friend {

private String department;


public CompFriend( String na, String de, String ph ) {

super(na, ph);

department = de;

}

public void showInfo() {

super.showInfo();

System.out.println( "부서 : " + department );

}

}


class UnivFriend extends Friend {

private String major;


public UnivFriend ( String na, String ma, String ph ) {

super( na, ph );

major = ma;

}

public void showInfo() {

super.showInfo();

System.out.println("전공 : " + major);

}

}







상속으로 묶은 결과


public static void main( String[] args ) {

Friend[] frns = new Friend[10];

int cnt = 0;


frns[cnt++] = new UnivFriend("LEE", "Computer", "010-333-555");

frns[cnt++] = new UnivFriend("SEO", "Electronics", "010-222-444");

frns[cnt++] = new CompFriend("YOON", "R&D 1", "02-123-999");

frns[cnt++] = new CompFriend("PARK", "R&D 2", "02-321-777");


// 모든 동창 및 동료의 정보 전체 출력

for ( int i = 0; i<cnt; i++) {

frns[i].showInfo();                    // 오버라이딩 한 메소드가 호출된다.

System.out.println();

}

}


이러한 클래스 디자인 기반에서 관리 대상이 넷, 다섯으로 늘어 난다면?


인스턴스 관리와 관련해서 코드가 복잡해지지 않는다.




반응형