OOP 상속 일명 "가족에 관한 것"

I wish I had a rich uncle, but unfortunately we're not talking about that kind of inheritance.



하지만 우리는 가족에 대해 이야기하고 있습니다.



특히 상속은 부모 클래스와 자식 클래스의 관점에서 설명됩니다.

슈퍼 클래스



어떻게 한 클래스가 다른 클래스의 부모가 될 수 있습니까? 우리 수업이 여기서 출산하는 것과는 다릅니다. 사실 어떤 사람들은 그것들을 "슈퍼"클래스라고 부르는 것을 선호하는데, 개인적으로는 그것이 더 의미가 있다고 생각합니다.

따라서 클래스가 다른 개체(또는 인스턴스)의 공통 속성 및 동작으로 구성되어 있다면 슈퍼 클래스는 무엇이라고 생각하십니까?

바로, 다른 클래스에 공통되는 속성이 있습니다!

우리가 슈퍼 또는 부모라고 말할 때 실제로 말하는 것은 "더 일반적인"입니다.

모든 정사각형은 직사각형입니다



여러분이 잘 알고 있는 예를 살펴보겠습니다. 직사각형과 정사각형이 무엇인지 기하학에서 기억하실 것입니다.

또한 모든 정사각형은 직사각형이기도 하지만 모든 직사각형이 반드시 정사각형일 필요는 없다는 점을 기억할 것입니다. 정사각형에는 직사각형의 모든 속성(4개의 변, 4개의 직각)이 있지만 추가 속성(모든 변의 길이가 같음)도 있습니다.

직사각형에 대한 클래스를 만들면 다음과 같습니다.

class Rectangle
    @sides = 4
    @all_right_angles = true
end


및 사각형:

class Square
    @sides = 4
    @all_right_angles = true
    @all_sides_equal = true
end


직사각형 클래스의 모든 항목이 정사각형 클래스에 있음을 알 수 있습니다.

클래스의 요점은 더 추상적이고 더 일반적이기 때문에 더 일반적인 클래스는 "슈퍼"클래스입니다. 이 경우 사각형은 상위 또는 상위 클래스입니다. 정사각형 클래스는 하위 클래스 또는 자식 클래스로 간주됩니다.

조부모 클래스 및 기타 관계



사각형은 사각형의 모든 속성과 동작을 갖기 때문에 사각형은 사각형의 부모입니다.

그러나 모든 직사각형은 평행사변형이기도 하지 않습니까? (기하학을 잊었다면 대답은 '예'입니다.)

그리고, 모든 평행사변형은 또한 사변형이 아닙니까? 그리고 모든 사변형도 다각형이 아닙니까? 그리고 전부는 아닙니다... 당신은 아이디어를 얻습니다.

부모님의 부모님처럼 우리는 이러한 클래스를 조부모 클래스라고 부를 수 있습니다. 추가 관계는 사망자 또는 조상 클래스로 간주될 수 있지만 일반적이지 않습니다.

** 정사각형 < 직사각형 < 평행사변형 < 사변형 < 다각형 **

같은 부모를 공유하지만 달리 관련이 없는 "형제"클래스도 있습니다.

예를 들어 rhombus 클래스는 둘 다 평행사변형 클래스의 자식이기 때문에 직사각형 클래스의 형제가 됩니다!



코드의 상속



이제 개념을 파악했으므로 코딩에 대한 의미를 살펴보겠습니다.

이전의 정사각형 및 직사각형 클래스를 살펴보십시오.

class Rectangle
    @sides = 4
    @all_right_angles = true
end

class Square
    @sides = 4
    @all_right_angles = true
    @all_sides_equal = true
end


사각형에는 사각형의 모든 속성과 동작이 있으므로 사각형 클래스를 사각형의 자식 또는 하위 클래스로 설정할 수 있습니다. Ruby에서는 클래스 선언에서 '<'를 사용하여 이 작업을 수행합니다.

class Rectangle
    @sides = 4
    @all_right_angles = true
end

class Square < Rectangle
    @all_sides_equal = true
end


이제 정사각형 클래스는 직사각형 클래스의 모든 것을 * 상속 *하므로 다시 입력할 필요가 없습니다!

좋은 웹페이지 즐겨찾기