계승
하위 클래스는 상위 클래스의 특성을 상속한다.
- 속성(필드 및 속성)
- 운영(방법)
하위 클래스는 상위 클래스를 확장 할 수 있다.
- 새 필드 및 메소드 추가
- 메서드 재정의(기존 동작 수정)
상속에는 많은 이점이 있습니다.
- 확장 성
- 재사용 성
- 추상화 제공
- 중복 코드 제거
Base Class == Parent Class
Derived class == child class
동일한 표현이다.
파생 클래스의 이름 뒤에 기본 클래스의 이름을 지정한다.
public class shape
{...}
public class Circle(자식 프로세스 이름) : shape(부모 프로세스 이름)
{...}
부모 자식 관계 성립
파생 클래스의 생성자에서는 base라는 키워드를 사용하여 base 클래스의 생성자를 호출한다.
public Circle (int x, int y) : base(x)
{...}
Example 1
class Emplyee {
public:
Employee(string theName, float thePayRate); // 함수 선언
string getName(); // 함수 선언
float getPayRate(); // 함수 선언
float pay(float hoursWorked); //함수 선언
Protected: // 데이터 멤버 선언
string name;
float payRate;
};
Employee::Employee(string theName, float thePayRate) // 소속클래스::멤버 함수 정의
{
name = theName;
payRate = thePayRate;
}
string Employee::getName() // 소속클래스::멤버 함수 정의
{
return name;
}
float Employee::getPayRate() // 소속클래스::멤버 함수 정의
{
return payRate;
}
float Employee::pay(float hoursWorked) // 소속클래스::멤버 함수 정의
{
return hoursWorked * payRate;
}
Example 2 (no reuse) 재 사용하지 않고 독립적으로 따로 만든 예제.
class Manager {
public:
Manager(string theName, float thePayRate, bool isSalaried)
string getName();
float getPayRate();
bool getSalaried();
float pay(float hoursWorked);
Protected:
string name;
float payRate;
bool salaried;
};
Manager::Manager(string theName, float thePayRate, bool isSalaried) {
name = theName;
payRate = thePayRate;
salaried = isSalaried;
}
string Manager::getName(){
return name;
}
float Manager::getPayRate()
{
return payRate;
}
bool Manager::getSalaried()
{
return salaried;
}
float Manager::pay(float hoursWorked)
{
if (salaried)
return payRate;
/* else */
return hoursWorked * payRate;
}
Example (with reuse) 재 사용 하는 예제, OOP의 언어를 최대한 사용한 예제.
class Employee {
public:
Employee(string theName, float thePayRate);
string getName();
float getPayRate();
float pay(float hoursWorked);
protected:
string name;
float payRate;
};
#include "employee.h"
class Manager : public Employee {
public:
Manager(string theName, float thePayRate, bool isSalaried);
bool getSalaried();
float pay(float hoursWorked);
protected:
bool salaried;
};
댓글 없음:
댓글 쓰기