Множественное наследование.
Мно́жественноенасле́дование — свойство, поддерживаемое частью объектно-ориентированных языков программирования, когда класс может иметь более одного суперкласса (непосредственного класса-родителя). Эта концепция является расширением «простого (или одиночного) наследования» (англ. singleinheritance), при котором класс может наследоваться только от одного суперкласса.
Множественное наследование позволяет классу перенимать функциональность у множества других классов, как например, класс StudentMusician может наследовать от класса Person, класса Musician и класса Worker, что сокращенно можно написать:
StudentMusician:Person, Musician, Worker.
Неопределенность при множественном наследовании, как в примере выше, возникает если, к примеру, класс Musician наследует от классов Person и Worker, а класс Worker в свою очередь наследует от Person; подобная ситуация называется ромбовидным наследованием. Таким образом, у нас получаются следующие правила:
Worker: Person
Musician: Person, Worker
StudentMusician: Person, Musician, Worker
Если компилятор просматривает класс StudentMusician, то ему необходимо знать нужно ли объединять возможности классов или они должны быть раздельными. Например, логично будет присоединить «Age» (возраст) класса Person к классу StudentMusician. Возраст человека не меняется если вы рассматриваете его как Person (человек), Worker (рабочий) или Musician (музыкант). Однако, будет довольно логичным отделить свойство «Name» (имя) в классах Person и Musician, если они используют сценический псевдоним, отличающийся от настоящего имени. Варианты объединения и разделения вполне корректны для каждого из собственных контекстов и только программист знает, какой вариант является правильным для проектируемого класса.
Дата добавления: 2015-12-21; просмотров: 16; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!