Dmitriy2003 писал(а):...
Public class C1
'
Public sub NachHause(bParam as boolean) as boolean
'
какой нить код здесь
'
end sub
'
end class
Public class M1
IMPLEMENTS c1
'
dim parent as C1
'
public sub NachHause( bParam as boolean) as boolean
parent.NachHause(bParam)
end sub
end class
...
GSerg писал(а):Для реализации интерфейсов. А не для наследования.
shovgenyuk писал(а):Выходит что IMPLEMENTS только для того что бы все классы которые созданы, например с IMPLEMENTS С1 имели бы такой же интерфейс как С1.
shovgenyuk писал(а):Тоесть что бы показать разработчику что в классе С1 есть такой-то интерфейс, и не только показать, а даже "заставить" разработчика реализовать етот интерфейс, НО в нутри нового класса.
shovgenyuk писал(а):"Наружный интерфейс" нового класса может совсем отличатся от интерфейса класса С1
shovgenyuk писал(а):или если захочет разработчик, то может написать такой же интерфес как в С1.
shovgenyuk писал(а):И какое здесь унифицированное обращение если разработчик может и не реальзовать весь интерфейс в новом классе от наследуемого
shovgenyuk писал(а):но зато разработчик обязательно должен (иначе не компилируется) реализовать етот интерфейс внутри класса, что для унифицированного доступа не имеет никакого значения.
shovgenyuk писал(а):Тоесть унифицированный интерфейс зависит не от IMPLEMENTS, а от того перепишет ли его разработчик с наследуемого класса или нет, а IMPLEMENTS только добавит ему лишнюю работу-реализовать интерфейс внутри класса.
shovgenyuk писал(а):Есть еще одна проблема:
Что будет если интерфейс класса С1 будет дополненный (не переписан, а дописан), например каким-то методом? Наверное нужно будет реализовать етот метод во всех классах которые содержат "IMPLEMENTS С1".
shovgenyuk писал(а):Учитывая все ети недостатки не удобнее ли просто сделать шаблон класса С1 и при создании новых классов пользоваться етим шаблоном и не парится с етим IMPLEMENTS?
alibek писал(а):...Просто тебе видимо не приходилось писать систему, ориентированную на плугины и расширения. Там Implements очень полезен.
GSerg писал(а):shovgenyuk писал(а):"Наружный интерфейс" нового класса может совсем отличатся от интерфейса класса С1
Нет.
У каждого COM-класса может быть сколько угодно внешних интерфейсов. При использовании implements, к списку внешних интерфейсов добавляется ещё один. И он становится исключительно внешним. И никуда разработчик его не денет и не изменит.
GSerg писал(а):shovgenyuk писал(а):но зато разработчик обязательно должен (иначе не компилируется) реализовать етот интерфейс внутри класса, что для унифицированного доступа не имеет никакого значения.
Только и именно это имеет значение для цнифицированного доступа. Интефейс реализуется внутри класса, но доступен снаружи. Что, в принципе, очевидно?
shovgenyuk писал(а):Как мне обратится к етому интерфейсу?
После переменной типа нового класса ставлю точку и никаких интерфейсов от старого интерфейса (наследумого) там не появляется.
shovgenyuk писал(а):Как он доступен с наружи?
GSerg писал(а):Но только неясно, что документ делает в dll или в exe.
GSerg писал(а):shovgenyuk писал(а):Как мне обратится к етому интерфейсу?
После переменной типа нового класса ставлю точку и никаких интерфейсов от старого интерфейса (наследумого) там не появляется.
Объяви переменную нужным типом. As C1.shovgenyuk писал(а):Как он доступен с наружи?
Когда пользователь класса объявит его переменную нужным типом. As C1.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109