*은닉성(Data Hiding) = 캡슐화 (Encapsulation)
몰라도 되는것은 깔끔하게 숨기겠다!
이유!
정말 위험하고 건드리면 안되는 경우
다른 경로로 접근하길 원하는 경우
class Car
{
public: // 접근 지정자
void MoveHandle() {}
void PushPeda() {}
void OpenDoor() {}
void TurnKey()
{
RunEngin();
}
private:
void DisassembleCar() {}
void ConnectCircuit() {}
protected:
void RunEngin() {}
public:
};
class SuperCar : public Car // 상속 접근 지정자
{
public:
void PushRemoteControler()
{
RunEngin();
}
};
int main()
{
SuperCar car;
car.PushRemoteControler();
return 0;
}
같이 동작해야되는것은 한번에묶어서 밖에서 사용할 수 있게 하는것이 좋음
class Berserker
{
public:
int GetHP()
{
return _hp;
}
void SetHP(int hp)
{
_hp = hp;
if (_hp <= 50)
SetBerserkerMode();
}
private:
void SetBerserkerMode()
{
cout << "매우강해짐!" << endl;
}
int _hp = 100;
};
int main()
{
Berserker b;
b.SetHP(20);
return 0;
}
이렇게 버서커모드와 hp는 클래스 내부에서만 건드릴수 있게 하고 hp를 설정하는것은 setHP 함수를 이용해서 하는 이런 논리적으로 묶어놓는부분이 좋음
class SuperCar : private Car
// 상속 접근 지정자: 다음 세대한테 부모님의 유산을 어떻게 물려줄지?
//부모님한테 물려받은 유산을 꼭 나의 자손들한테도 똑같이 물려줘야 하진 않음
//public : public->public, protected->protected //그대로 상속
//protected : public->protected, protect->protect //
//private : public->private, protect->private // 나만 쓰고 그외엔 상속 x
class SuperCar : car // 이렇게 선언할 경우 앞에 private 가 붙어있는게 생략된것임
그래서 그 외에도 사용하려면
class SuperCar : puliic car 이렇게 앞에 public 을 붙여줘야함
'프로그래밍 > c++' 카테고리의 다른 글
초기화 리스트 (0) | 2023.03.01 |
---|---|
객체지향의 3대속성 - 다형성 (0) | 2023.03.01 |
객체지향의 3대속성 - 상속성 (0) | 2023.02.22 |
객체지향(생성자와 소멸자) (0) | 2023.02.22 |
객체지향 기초(OOP) Object Oriented Programming (0) | 2023.02.22 |
댓글