7 분 소요

Ⅲ. 객체지향의 특성

ⅰ. 상속성 (Inheritance)

  • 상속: 자식 클래스의 객체가 생성 될 때 부모의 클래스 멤버를 포함하는 것
  • 부모의 것을 물려줌
    class Player
    {
        public:
            int m_hp;
            int m_attck;
            int m_defence;
        public:
            // Player 멤버 함수
    };
    
    class Knight : public Player
    {
        public:
            int m_stamina;
        public:
            // Knight의 멤버 함수
    };
    
    int main()
    {
        Knight k;
        k.m_attack = 20; // 부모의 멤버에 접근 가능
    
        return 0;
    }
    

ⅱ. 은닉성 (Data Hiding, Encapsulation)

  • 몰라도 되는 것을 숨김
    • 은닉: 데이터 중 사용자가 몰라도 되는 것을 숨기는 것
      1. 위험하거나 건드리면 안되는 것
      2. 다른 경로로 접근을 원할 경우
    • 캡슐화: 연관된 데이터와 함수를 논리적으로 묶어 놓은 것
      1. 노출시키고 싶은 함수만 노출, 내부는 숨겨 놓음
      class Test
      {
          public:
              int m_pub;
          private:
              int _pri;
      }
      
      int main()
      {
          Test t;
          t.m_pub = 0; // (O) 접근 가능
          t._pri = 2;  // (X) 접근 불가
          return 0;
      }
      

ⅲ. 다형성 (Polymorphism)

  • 같지만 다르게 동작
    • 하나의 기능이 경우에 따라 서로 다르게 보이거나 작동하는 것
      1. 연산자 중복 (Operator Overloading): 부모 클래스 함수를 자식 클래스에서 재정의
      2. 함수 중복 (Function Overloading): 함수 이름 재사용

ⅳ. 추상화 (Abstraction)

  • 객체에서 공통된 속성과 행위를 추출하는 것
    /* 학생, 선생님, 직장인… 공통점 추출  */
    class Human
    {
        public:
            int m_age;
            double m_height;
            double m_weight;
            string m_name;
    };
    


📑. 참고

카테고리:

업데이트:

댓글남기기