![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Цитата:
Вы так говорите, как будто экземпляры и объекты класса - разные вещи. Вы так говорите, как будто вики - последняя инстанция, которая всегда права. Вы так говорите, как будто в вики не написано Цитата:
В английской вики, например, написано: Цитата:
Вы извините меня, я действительно не вижу противоречия принципам ООП в наследовании статических членов класса. Как и не вижу причин сводить тему к оскорблениям. Спасибо за понимание. Давайте начнем сначала, не трогая экземпляры. Статический метод или аттрибут класса - свойство конкретного класса. Хорошо. Что, согласно принципам ООП, представляет из себя класс-наследник? С моей точки зрения - класс, который ведет себя точно так же, как и базовый. За исключением случаев переопределения аттрибутов или методов класса, или расширения его функционала. Мне наследование так объясняли. 1. Что происходит, когда статические члены классов не наследуются? Класс-наследник имеет меньший функционал, чем базовый класс. 2. Что происходит, когда статические члены классов наследуются? Класс-наследник ведет себя так же, как и базовый класс. С моей точки зрения - первый случай противоречит принципам наследования в ООП, а второй - нет. Мне интересна ваша точка зрения на эту ситуацию. Мне интересно, какие принципы нарушает наследование статических членов класса. Мне интересно разобраться. Возможно я неправильно понимаю принципы наследования, тогда покажите мне правильные. Я вас поблагодарю и мы закроем тему. |
|
|||||
|
стервочка (я мужик)
|
нельзя рассматривать классы без экземпляров. по ссылке сказано:
Цитата:
|
|
|||||
|
У Мука написано, что нельзя НАСЛЕДОВАТЬ статические свойства и методы класса.
__________________
Стой! Опасная зона! Работа мозга! |
|
|||||
|
Modus ponens
|
В Java и в AS3 разная реализация статических свойств, так что даже смысла нет сравнивать - в Java статические свойства доступны так же и у экземпляра, а не только у его класса, в AS3 экземпляр даже понятия не имеет про статические свойства его класса.
А вообще, а зачем это нужно было? Т.е. если вам нужно использовать ту же функцию, что и в родительском классе - так ее (родительскую) и используйте...
__________________
Hell is the possibility of sanity |
|
|||||
|
Я не сравнивал с Java, я вспомнил про Java только потому, что она же вроде как ООП, т.е. принципы ООП в ней не должны нарушаться. Ну, по идее.
Зачем? А зачем вобще статические классы? Например Math, ExternalInterface... Например, если нужна какая-нибудь продвинутая математика - отнаследовал класс MegaMath, дописал нужные методы, и пользуешься постоянно MegaMath вместо того, чтобы иногда использовать Math, а иногда - расширеную версию. (На всякий случай - гипотетическая ситуация, я знаю, что Math - final) 2BlooDHounD: Классы нельзя рассматривать без экземпляров? А как же классы, у которых нет и не может быть экземпляров? Абстрактные или полностью статические? Они же не противоречат принципам ООП, правда? Ну да, я понимаю, что статические члены класса задают поведение классу, а не экземпляру. Но покажите мне формулировку того принципа, по которому наследование ограничивается поведением экземпляров класса и не включает в себя наследование поведения класса. Если вы имеете ввиду - "противоречит принципам реализации ООП в AS3", то мы просто неправильно друг друга поняли. Последний раз редактировалось crazyone; 16.07.2009 в 20:32. |
|
|||||
|
стервочка (я мужик)
|
crazyone, у sun своё видении ООП, как я уже сказал. у меня видение ООП через призму моих знаний, и некого ECMAScript. а ещё Вы читаете построчно, как я уже писал, и не воспринимаете информацию целиком. я ещё раз попробую написать масло масленое, но я всё равно понимаю что до Вас не дойдёт.
любой класс - это экземпляр класса, который унаследован от класса Class. любое статическое свойство - это свойство экземпляра класса, который наследуется от класса Class. что бы у какого-либо класса ( как экземпляра ) унаследовались свойства ( типа статические ), они должны быть описаны в классе Class ( в AS3, например, таким свойством является свойство prototype ). Добавлено через 14 минут показательный AS3 пример: package { import flash.display.Sprite; import flash.utils.describeType; public class Test extends Sprite { public function Test() { super(); trace( describeType( new SubClass() ) ); trace( describeType( SubClass ) ); } } } internal class BaseClass { public function BaseClass() { super(); } public function get baseProperty():Number { return 0; } } internal class SubClass extends BaseClass { public function SubClass() { super(); } } <type name="Test.as$0::SubClass" base="Test.as$0::BaseClass" isDynamic="false" isFinal="false" isStatic="false"> <extendsClass type="Test.as$0::BaseClass"/> <extendsClass type="Object"/> <accessor name="baseProperty" access="readonly" type="Number" declaredBy="Test.as$0::BaseClass" /> </type> <type name="Test.as$0::SubClass" base="Class" isDynamic="true" isFinal="true" isStatic="true">
<extendsClass type="Class"/>
<extendsClass type="Object"/>
<accessor name="prototype" access="readonly" type="*" declaredBy="Class" />
<factory type="Test.as$0::SubClass">
<extendsClass type="Test.as$0::BaseClass"/>
<extendsClass type="Object"/>
<accessor name="baseProperty" access="readonly" type="Number" declaredBy="Test.as$0::BaseClass" />
</factory>
</type>
Последний раз редактировалось BlooDHounD; 16.07.2009 в 21:18. |
|
|||||
|
Я вас непонял именно из-за того, что вы сказали "принципам ООП", а не "принципам AS3", или "принципам ECMAScript".
Вот и хотел выяснить - каким именно принципам ООП противоречит наследование статики классов. Т.е. мы вели разговор в разных терминологиях и конечно же не понимали друг-друга. Спасибо, теперь я понял, что вы имели ввиду и получил ответ на свой изначальный вопрос. |
|
|||||
|
стервочка (я мужик)
|
crazyone, лично я вёл разговор о принципах в общем. а Вы вели о других языках.
|
|
|||||
|
В принципах в общем ничего не говорится о том, что класс-наследник наследует от базового класса только прототип для своих экземпляров и не наследует прототип для себя. Если я не прав - поправьте меня.
То, что так написано в ECMAScript, еще не значит, что это это принцип ООП. В ECMAScript вряд ли множественное наследование допускается, но это же не значит, что множественное наследование противоречит принципам ООП. Еще раз: Наследование - механизм ООП, позволяющий создать класс-наследник на основе уже существующего класса. При этом класс-наследник заимствует поведение (свойства и функциональность) базового класса. Это общий принцип ООП. Вы согласны с этой формулировкой? Если нет - приведите формулировку наследования, которую считаете правильной. |
|
|||||
|
стервочка (я мужик)
|
crazyone, я Вам из википедии привёл много много текста. Вы сперва
разберитесь с понятием "класс", а потом уже с "наследованием". если Вы говорите о классе как об объекте, то, извините, но он такой же смертный как и его порождения. и так ещё масла: 1. прочитайте вдумчиво первый абзац определения класса. 2. там написано, что класс описывает какой-то объект. 3. если Вы говорите о статических свойствах класса, значит Вы говорите о существовании какого-то объекта, к которому эти свойства принадлежат. и этот объект - ваш класс. 4. вот тут Вы уже рассматриваете класс как какой-то объект. а рас так, то этот объект "связан контрактом" (по метафоре вики) с каким-то классом? то есть этот объект чей-то экземпляр, но чей? и от кого унаследован тот класс? что бы представить "идеального сферического коня в вакууме" (в нашем случаи это идеальное ООП), нужно не хилое воображение. p.s.: на этом я тут заканчиваю. Последний раз редактировалось BlooDHounD; 17.07.2009 в 13:31. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|