상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스 (Base class) 파생 클래스 (Derived class) 두원공과대학 소프트웨어개발과 이 원 주
목 차 교육 목표 상속(Inheritance) 상속시 생성자/소멸자 호출 순서 베이스 클래스 인수전달 다중상속(Multiple Inheritance) 프로그래밍 실습 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (1) 상속(Inheritance) 정의 Format 하위클래스가 상위클래스의 속성을 전달 받는 것 Format class 파생클래스명: public[private] 베이스클래스명{ …………… }; private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스 (Base class) 파생 클래스 (Derived class) 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (2) 파생클래스의 공용멤버로 상속 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (3) 파생클래스의 전용멤버로 상속 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (4) 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (5) 보호(protected)부분의 상속 class 클래스명 { [private:] //전용부분 …… //클래스 외부접근 불가능, 상속 불가능 protected: //보호부분 …… //클래스 외부접근 불가능, 상속가능 public: //공용부분 …… //클래스 외부접근 가능, 상속 가능 }; private 전용부분 전용부분 보호부분 보호부분 public 공용부분 공용부분 기본 클래스 (Base class) 파생 클래스 (Derived class) 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (6) 두원공과대학 소프트웨어개발과 이 원 주
상속(Inheritance) (7) 두원공과대학 소프트웨어개발과 이 원 주
상속시 생성자/소멸자 호출순서(1) 생성자 호출순서 소멸자 호출순서 상속시 생성자/소멸자 호출순서(1) 생성자 호출순서 파생되는 순서에 따라 호출(베이스 클래스 > 파생 클래스) 소멸자 호출순서 생성자의 역순으로 호출(파생 클래스 > 베이스 클래스) 두원공과대학 소프트웨어개발과 이 원 주
상속시 생성자/소멸자 호출순서(2) 두원공과대학 소프트웨어개발과 이 원 주
베이스 클래스 생성자 인수전달 (1) 인수전달 베이스 클래스의 생성자에 인수가 전달되는 경우 베이스 클래스, 파생클래스에 전달되는 모든 인수를 파생클래스에 전달 파생클래스의 생성자 정의 Format 파생 클래스_생성자명(인수 리스트) : 베이스 클래스_생성자명(인수 리스트){ …………. } 두원공과대학 소프트웨어개발과 이 원 주
베이스 클래스 생성자 인수전달 (2) 두원공과대학 소프트웨어개발과 이 원 주
베이스 클래스 생성자 인수전달 (2) 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (1) 정의 두 개 이상의 클래스로부터 속성을 물려받는 상속 유형 1 Format 전용부분 A 보호부분 class A { ..... }; class B : public A { ..… }; class C : public B { ..… }; 공용부분 전용부분 B 보호부분 공용부분 전용부분 C 보호부분 공용부분 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (2) 유형 2 A B C 전용부분 전용부분 전용부분 보호부분 보호부분 보호부분 공용부분 공용부분 공용부분 전용부분 보호부분 공용부분 D Format class A { ..... }; class B { ..... }; class D : public A, public B, public C { ..… }; 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (3) 유형 3 전용부분 전용부분 A 보호부분 B 보호부분 공용부분 공용부분 전용부분 전용부분 C 보호부분 보호부분 D 공용부분 공용부분 Format class A { ..... }; class B { ..... }; class C : public A, public B { ..... }; class D : public B { ..… }; class E : public C, public D { ..... }; 전용부분 E 보호부분 공용부분 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (4) 유형 2의 예 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (5) 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (6) 가상 베이스 클래스(Virtual base class) 클래스 D의 경우 문제점 클래스 A의 멤버를 참조할 때, 클래스 D내에는 A가 두 번 복사된다. 이 때 클래스 B를 통하여 참조할 것인지 아니면 클래스 C 통하여 참조할 것인지 하는 모호성이 발생 전용부분 A 보호부분 공용부분 전용부분 전용부분 B 보호부분 보호부분 C 공용부분 공용부분 해결방법(가상 베이스 클래스) 클래스 A만을 복사하도록 하는 가상 베이스 클래스 기능 이용 전용부분 D 보호부분 공용부분 두원공과대학 소프트웨어개발과 이 원 주
다중 상속(Multiple Inheritance) (7) 예 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 실습 실습시간(30분) 아래와 같이 베이스클래스의 공용부분 멤버함수를 파생클래스의 전용부분으로 상속되도록 프로그램을 작성하시요. 기본 클래스 (Base class) 파생 클래스 (Derived class) 상속 전용 부분 int x int y setx() showx() setxy() showx() 공용 부분 setx() : 전용변수(x)에 값 대입 showx() : 전용변수(x)에 값 출력 setxy() : 전용변수(x, y)에 값 대입 showxy() : 전용변수(x, y)에 값 출력 두원공과대학 소프트웨어개발과 이 원 주
프로그래밍 실습 결과 두원공과대학 소프트웨어개발과 이 원 주
정 리 상속(Inheritance) 상속시 생성자/소멸자 호출 순서 베이스 클래스 인수전달 다중상속(Multiple Inheritance) 프로그래밍 실습 두원공과대학 소프트웨어개발과 이 원 주