가상 클래스 란 무엇입니까?

가상 클래스는 메모리에 한 번만 할당되는 클래스이므로 해당 클래스의 어린이가 메모리에서 설정된 부모 클래스의 한 사본 만 사용하도록합니다. 클래스는 공통 특성이나 속성을 공유하는 객체 그룹입니다. 클래스 가상을 만들면 객체 지향 프로그래밍 언어가 두 번째 이상의 부모 클래스에서 공통 조상 기본 클래스에서 파생 될 때 여러 상속을 사용할 수있는 기능을 제공합니다. 참조 된 컴퓨터 프로그래밍 언어에 따라, "가상"키워드, 유사한 키워드, 또는 클래스의 구문 및 의미론은 특정 클래스가 가상으로 간주되어야한다는 것을 암시하는 데 사용됩니다.

모든 객체 지향적 프로그래밍 언어가 여러 상속을 허용하는 것은 아닙니다. C ++와 같은 프로그래밍 언어에서 클래스는 두 부모 클래스의 모든 멤버 데이터 및 멤버 기능을 한 번에 상속받을 수 있으며 두 PAR 세트에 액세스 할 수 있습니다.ENT 데이터 및 기능. 다중 상속을 지원하는 다른 언어에는 Perl, Python, TCL 및 Eiffel이 있습니다.

어린이 수업을 만드는 데 사용되는 두 명 이상의 부모 수업이 원래 한 명 이상의 조부모 수업에서만 도출 된 경우 여러 상속 계층에서 문제가 발생합니다. 이것을 다이아몬드 문제라고하며,이 상황에서 계층 구조가 어떻게 보이는지에서 비롯된 이름입니다. 컴파일러 프로그램이 공통된 조부모가있는 두 부모 수업으로 만든 손자 수업과 같은 수업을 인스턴스화하려고 할 때, 조부모의 두 사본은 각 부모마다 하나씩 만들어집니다.

메모리에 동일한 조부모의 여러 사본으로 인한 모호성으로 인해 컴파일러는 손자가 조부모의 데이터 나 기능에 액세스하는 데 어떤 조부모의 사본을 확인할 수 없습니다. 이 상황을 해결하기 위해 C ++에서 조부모는 미덕으로 만들어집니다.부모를 선언 할 때 수업. 이로 인해 컴파일러는 부모가 공유하는 할아버지의 한 사본 만 만들게됩니다. 조부모가 가상 클래스가되면, 컴파일러는 조부모의 사본이 하나만 있기 때문에 손자가 조부모에게 어떻게 접근 해야하는지 결정하는 데 아무런 문제가 없습니다.

클래스 계층 구조를 구성 할 때, 특히 미래에 훨씬 더 큰 계층의 기반이 될 때 클래스 계층 구조를 구성 할 때주의를 기울여야합니다. 가상 클래스의 적절한 활용은 클래스 계층 구조가 개발에서 더 큰 위도를 제공합니다. 그러나 찾기 어려운 오류를 일으킬 가능성이 있습니다. 견고한 컴퓨터 프로그래밍 엔지니어링 원칙에 대한 연구는 부적절한 프로그램 조직의 예기치 않은 부작용이 발생하지 않도록하는 데 도움이 될 것입니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?