Oop(객체지향 프로그래밍)에서의 상속과 시맨틱 웹에서의 '상속'의 차이점?

223p를 보면, note에 OOP에서의 상속과 시맨틱 웹에서의 상속에 대해 간단한 설명이 나와 있습니다. 근데 그 두 개의 상속의 차이점에 대해 잘 와닿지 않아서 질문 드립니다! 혹시 어떤 부분에서 의미적인 차이점이 있는 걸까요…?

subClassOf의 시맨틱 웹 정의는 OOP의 하위 클래스 또는 확장 정의와 유사하다. OOP에서 일부 클래스의 인스턴스는 슈퍼 클래스의 인스턴스와 동일한 방식으로 동일한 메서드에 응답한다. … 그러나 OOP와 차이점이 있다. 예를 들어, OOP 시스템에서 하위 클래스가 슈퍼 클래스에 정의된 메서드에 대한 재정의를 정의할 때 이 작업은 중단된다. … 시맨틱 웹 용어에서 'Henleys’의 인스턴스는 여전히 'Shirts’의 인스턴스다. 그러나 대부분의 OOP 의미론에서는 동일하지 않다. 'Henleys’의 정의는 'Shirts’의 정의보다 우선하기 때문에 'Henleys’는 실제로 'Shirts’처럼 고려할 필요가 전혀 없다. 시맨틱 웹의 논리에서 이것은 허용되지 않는다.

1개의 좋아요

OOP에서의 상속은 '재정의’와 '확장’과 밀접합니다. OOP에서는 슈퍼 클래스를 서브 클래스가 상속받으면, 서브 클래스가 클래스를 '재정의’하여 다른 기능을 하도록 만들 수 있습니다. 상속을 받았기에 슈퍼 클래스와 서브 클래스의 함수가 같은 명칭을 가지겠지만, 실행 과정에서는 슈퍼 클래스의 정의보다 재정의된 서브 클래스의 정의가 우선시되어 실행됩니다. 결과적으로 슈퍼 클래스가 아닌, 서브 클래스에 기술된 사항들이 실행된 것으로 보이게 됩니다. 저는 이러한 특징이 다음의 인용부에 반영된 것이라고 이해했습니다.

OOP에서 서브 클래스는 상속을 통해 기존 슈퍼 클래스가 갖고 있던 기능에 추가적인 기능을 더하는 '확장’을 할 수도 있습니다. 서브 클래스의 기능과 역할이 슈퍼 클래스보다 커지는 것입니다. 반면 시맨틱 웹에서는 서브 클래스가 슈퍼 클래스의 부분집합과 같다고 보았습니다. 다음 인용부에 이러한 의미가 반영된 것이라고 생각합니다.