Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Доступ к методу по :: ? / 18 сообщений из 18, страница 1 из 1
22.11.2007, 21:35
    #34959762
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
А как в ините сложного объекта А обратиться не к Х методу родителя (А::Х), а к У методу его составной части В, но не к тому, который возможно модифицирован в родителе, а к оригинальному в классе С, из которого произошел В ?
...
Рейтинг: 0 / 0
22.11.2007, 21:41
    #34959771
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Если добавлять признаки-свойства и через dodefault я знаю, а вот вызвать напрямую код не знаю как, может ли это ::?
...
Рейтинг: 0 / 0
22.11.2007, 21:59
    #34959785
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
AMorkovkaЕсли добавлять признаки-свойства и через dodefault я знаю, а вот вызвать напрямую код не знаю как, может ли это ::?
Можно так:
ClassParent::Method()
С уважением, Алексей.
...
Рейтинг: 0 / 0
22.11.2007, 21:59
    #34959786
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Хелп жестоко говорит, что весь А не есть потомок С, потому нельзя использовать ::. Вопрос снят.
...
Рейтинг: 0 / 0
22.11.2007, 22:02
    #34959788
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
AMorkovkaХелп жестоко говорит, что весь А не есть потомок С, потому нельзя использовать ::. Вопрос снят.
Где вы такое в HELP-е обнаружили ?!
Я вот такое нашел:
The :: operator is used to execute a parent class method from within a subclass method. When you create a subclass, the subclass methods are automatically inherited from the parent class. The :: operator makes it possible for you to execute the parent class method in the subclass method and then perform additional processing for the subclass method. The subclass definitions in the example demonstrate how the :: operator is used to execute the parent class method within a subclass method.
С уважением, Алексей.
...
Рейтинг: 0 / 0
22.11.2007, 22:09
    #34959798
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
А может вопрос и не снят? Не знаю, что делать с ClassParent в Вашей подсказке-как в ините сложного объекта А обратиться, как использовать подсказку? Хелп я имел ввиду тот, что давал разъяснение ошибки, когда она возникает при разных вариантах использования ::.
...
Рейтинг: 0 / 0
22.11.2007, 22:17
    #34959805
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Нет, все же нельзя.
...
Рейтинг: 0 / 0
22.11.2007, 22:19
    #34959808
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Все очень просто:
Вы можете обратиться из своего класса к любому методу любого класса, который является parent любой уровня для вашего класса. Напрмимер:
Есть класс Class1. У него есть прямой предок (родитель) ParentClass и еще два предка по иерархии выше: ParentClassLevel1 b ParentClassLevel2. Т.е. иерархия такова: ParentClassLevel2->ParentClassLevel1->ParentClass->Class1 (мой класс)
Тогда из метода своего класса я могу обратится у тому же методу прямого родителя (ParentClass) через DODEFAULT(). А обратится к любому методу класса - предка (но не родителя) ParentClassLevel1 можно так:
ParentClassLevel1::MyMetho() или к методу класса ParentClassLevel2::MyOtherMethod()

С уважением, Алексей
...
Рейтинг: 0 / 0
22.11.2007, 22:21
    #34959811
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
AMorkovkaНет, все же нельзя.
Может вы пытаетесь обратся не у методу предка?
А какая у вас версия VFP ?
С уважением, Алексей.
...
Рейтинг: 0 / 0
22.11.2007, 22:25
    #34959814
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
9-ка
...
Рейтинг: 0 / 0
22.11.2007, 22:33
    #34959820
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Вы говорите правильно, но у меня С входит в конейнер В, который есть родителем А. Потому из инита А я могу обратиться к методу Х В (В:Х), а вот к методу У С (С:У)-ошибки лезут, наверное, нет, потому что А не наследник С, а наследник целого В.
...
Рейтинг: 0 / 0
22.11.2007, 22:36
    #34959825
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
А... контейнер.. Т.е. вы обращаетсесь не у классу предку..
Тогда не выйдет. Все правильно.
С уважением, Алексей
...
Рейтинг: 0 / 0
23.11.2007, 08:39
    #34960087
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Объявите поле типа С в класса А с видимостью Protected и обращайтесь к методам С из В напрямую.
...
Рейтинг: 0 / 0
23.11.2007, 08:42
    #34960088
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
fixxerОбъявите поле типа С в класса А с видимостью Protected и обращайтесь к методам С из В напрямую.

поменяйте в ответе А <--> В. запутался :)
...
Рейтинг: 0 / 0
23.11.2007, 09:03
    #34960108
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
o = CreateObject("Child")
o.printValue()

define class Delegate as Custom
	function getValue
		return "a value"
	endfunc  
enddefine 

define class Parent as Custom
	add object protected aDelegate as Delegate
enddefine 

define class Child as Parent
	procedure printValue
		? Parent::aDelegate.getValue()
	endproc 
enddefine 
...
Рейтинг: 0 / 0
23.11.2007, 11:22
    #34960560
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Хороший ход! Но я хотел обойти некоторую непоследовательность иерархий у себя, хотел чтобы можно было вывести только "a value" в некоторых случаях. Наверное, нельзя, не трогая код класса Parent:

o = CreateObject("Child")
o.printValue()

define class Delegate as Custom
function getValue
return "a value"
endfunc
enddefine

define class Parent as Custom
add object protected aDelegate as Delegate
function aDelegate.getValue
? DODEFAULT( )
return "b value"
endfunc
enddefine

define class Child as Parent
procedure printValue
? Parent::aDelegate.getValue()
endproc
enddefine
...
Рейтинг: 0 / 0
24.11.2007, 01:29
    #34962677
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
Боюсь то, что Вы написали смысла не имеет. Хотя я могу ошибаться, не писал на VFP уже два года. Вы бы объяснили чего хотите в терминах ооп.
...
Рейтинг: 0 / 0
24.11.2007, 16:56
    #34963126
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к методу по :: ?
В объекте С есть метод Х. Объект В есть контейнер, он содержит объект С, и в нем же (в В) переопределен для объекта С метод Х. Есть объект А, который наследует В. Вот в этом А хотелось (вопреки канонам ООП) увидеть изначальный текст метода Х (тот, о котором говорится в первом предложении абзаца, непереопределенный). Теперь то я тоже соглашусь, что не только тот мой вопрос смысла не имеет, а даже вредный, уводящий от истины, но, поверьте, не из-за моей прихоти, а от тогдашнего непонимания и робкой надежды. Прошу извинить.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Доступ к методу по :: ? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]