[C++] 은닉성
은닉성
인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다.
😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기!
은닉성
- 은닉성 (Data Hiding) = 캡슐화 (Encapsulation)
- 몰라도 되는 것은 깔끔하게 숨기겠다!
- 숨기는 이유?
- 정말 위험하고 건드리면 안되는 경우
- 다른 경로로 접근하길 원하는 경우
자동차 예시
- 핸들
- 페달
- 엔진
- 문
- 각종 전기선
- 일반 구매자 입장에서 사용하는 것?
- 핸들 / 페달 / 문
- 몰라도 되는 부품은? (오히려 건드리면 큰일남)
- - 엔진, 각종 전기선
public / protected / private
- public : 누구한테나 공개. 실컷 사용하세요~~
- protected : 나의 자손들한테만 허락
- private : 나만 사용할꺼야! << class Car 내부에서만!
- 상속 접근 지정자
- 다음 세대한테 부모님의 유산을 어떻게 물려줄지?
- 부모님한테 물려받은 유산을 꼭 나의 자손들한테도 똑같이 물려줘야 하진 않음
- - public : 공개적 상속? 부모님의 유산 설계 그대로~
- public -> public, protected -> protected
- - protected : 보호받은 상속? 내 자손들한테만 물려줄거야.
- public -> protected, protected -> protected
- - private : 개인적인 상속? 나까지만 잘 쓰고 자손들한테는 아예 안 물려줄거야~
- public -> private, protected -> private
- 거의 public만 쓴다. 아무것도 쓰지 않으면 private과 같다.
- - public : 공개적 상속? 부모님의 유산 설계 그대로~
코드
#include <iostream>
using namespace std;
class Car {
public: // (멤버) 접근 지정자
void MoveHandle() {}
void PushPedal() {}
void OpenDoor() {}
void TurnKey()
{
// ....
RunEngine();
}
protected:
void DisassembleCar() {} // 차를 분해한다
void RunEngine() {} // 엔진을 구동시킨다
void ConnectCircuit() {} // 전기선 연결
public:
// 핸들
// 페달
// 엔진
// 문
// 각종 전기선
};
class SuperCar : private Car // 상속 접근 지정자
{
public:
void PushRemoteController()
{
RunEngine();
}
};
class TestSuperCar : private SuperCar // public SuperCar이라고 작성을 안 하고 SuperCar이라고 작성하면 private으로 인식한다. 생략시 private으로 인식.
{
public:
void Test()
{
// DisassembleCar(); // 사용불가능. SuperCar에서 private으로 상속 받아서 DisassembleCar를 불러올 수 없다
}
};
// '캡슐화'
// 연관된 데이터와 함수를 논리적으로 묶어놓은 것
class Berserker
{
public:
int GetHp() { return _hp; }
// 사양 : 체력이 50 이하로 떨어지면 버서커 모드 발동 (강해짐)
void SetHp(int hp)
{
_hp = hp;
if (_hp <= 50)
SetBerserkerMode();
}
private:
void SetBerserkerMode()
{
cout << "매우 강해짐!" << endl;
}
private:
int _hp = 100;
};
int main()
{
SuperCar car;
car.PushRemoteController();
Berserker b;
b.SetHp(20);
TestSuperCar Tcar;
Tcar.PushRemoteController();
return 0;
}
'⭐ Programming > C++' 카테고리의 다른 글
[C++] 다형성, 가상함수 테이블, 순수 가상함수, 추상 클래스 (0) | 2022.04.05 |
---|---|
[C++] 다형성 (Polymorphism) (0) | 2022.04.05 |
[C++] 상속성 (0) | 2022.04.04 |
[C++] 생성자와 소멸자 2 (0) | 2022.04.04 |
[C++] 생성자와 소멸자 (0) | 2022.04.04 |
댓글
이 글 공유하기
다른 글
-
[C++] 다형성, 가상함수 테이블, 순수 가상함수, 추상 클래스
[C++] 다형성, 가상함수 테이블, 순수 가상함수, 추상 클래스
2022.04.05 -
[C++] 다형성 (Polymorphism)
[C++] 다형성 (Polymorphism)
2022.04.05 -
[C++] 상속성
[C++] 상속성
2022.04.04 -
[C++] 생성자와 소멸자 2
[C++] 생성자와 소멸자 2
2022.04.04