클래스(class)의 상속
😁 클래스(class)의 상속
👨👩👦 상속이란?
- 뒤를 이음.
- 법률 일정한 친족 관계가 있는 사람 사이에서, 한 사람이 사망한 후에 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 주거나, 다른 사람이 사망한 사람으로부터 그 권리와 의무의 일체를 이어받는 일.
📢 [네이버 어학사전]
상속의 사전 의미는 이러합니다. 그렇다면 이 의미를 클래스에 적용을 해보겠습니다.
객체지향 프로그래밍에 클래스의 상속을 간단하게 얘기하자면
🚩 부모 클래스의 맴버 변수와 메소드를 자식 클래스가 재사용하는 개념
위의 개념으로 이해하시면 편할 것 같습니다. 이제 의미는 알았으니 간단한 작성법을 알아보겠습니다.
✍ 작성법
class 클래스이름 : 접근제한자 부모클래스이름{
//내용 //
}
그런데 여기서 말씀안드린 내용이 있습니다. 바로 접근 제한자입니다.
❗ 접근제한자
접근제한자 | 설명 |
---|---|
private | 자신의 클래스 안에서만 접근 가능한 멤버 변수, 메소드 |
protected | 자신을 상속하는 클래스만 접근 가능 |
public | 모든 클래스에서 접근 가능 |
🧿 접근 범위 👉 public > protected > private
접근제한자를 통해서 접근 범위에 제한을 둘 수 있습니다.
예시를 통해서 지금까지 나온 내용을 정리하고, 추가적인 내용을 알아보겠습니다.
📖 예시
#include <iostream>
using namespace std;
class A
{
private:
int a;
int b;
public:
void setA(int _a)
{
if (_a > 10)
_a = 10;
a = _a;
}
void setB(int _b)
{
if (_b > 20)
_b = 20;
b = _b;
}
int getA()
{
return a;
}
int getB()
{
return b;
}
};
class B : A
{
public:
void setAB(int a, int b)
{
setA(a);
setB(b);
}
void print()
{
printf("%d + %d = %d\n", getA(), getB(), getA() + getB());
}
};
int main()
{
B b;
b.setAB(50, 60);
b.print();
}
결과 : 10 + 20 = 30
클래스 B는 클래스 A의 상속을 받습니다. 그리고 int a와 b는 클래스 A에서 private으로 접근을 제한했습니다. main 함수에서는 setAB를 통해서 int a와 b의 값을 바꾸려고 하지만 클래스 A에서 그것을 허용하지 않습니다. 클래스 B에서 int a와 b를 변경할 수 있는 방법은 클래스 A의 setA와 setB를 호출하여 전달하는 방법뿐입니다.
이렇게 멤버 변수를 함부로 바꿀 수 없게 멤버 함수(메소드)로 껍질을 입히는 것을
'캡슐화'라고 하며, get, set 메소드를 getter, setter 메소드라고 합니다.
저번 글에서 언급했던 객체지향언어의 특징인 💊'캡슐화' 입니다.
클래스의 상속을 배우면서 캡슐화의 간단한 구현도 해보았습니다.
Reference
Author And Source
이 문제에 관하여(클래스(class)의 상속), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dallok97/클래스의-상속저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)