Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

abstract class Object

Обсуждение темы abstract class Object в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Доброго времени суток. Назрел один вопрос. Частенько встречаю конструкцию вида: <?php abstract class Object { } class Class1 extends Object { // Что-либо ...


Закрытая тема
 
Опции темы
Старый 30.08.2009, 19:10   #1
Доброго времени суток. Назрел один вопрос. Частенько встречаю конструкцию вида:
<?php
abstract class Object {

}
class Class1 extends Object {
// Что-либо
}
class Class2 extends Object {
// Что-либо
}
?>
Собственно сам вопрос. Зачем присваивать всем классам один родительский класс Object и тем более делать его абстрактным? Всем спасибо.
 
Старый 30.08.2009, 19:10
Ссылки
Старый 31.08.2009, 00:33   #2
походу это привет из C...
В принципе необязательно совсем.
Хотя по мне так удобнее. всегда можно в Object напихать какой-нибудь хренотени, которая тебе потом понадобится во всех классах. А абстрактный он потому, что тебе экземпляры его не нужны
 
Старый 31.08.2009, 01:46   #3
Цитата:
походу это привет из C...
В принципе необязательно совсем.
Хотя по мне так удобнее. всегда можно в Object напихать какой-нибудь хренотени, которая тебе потом понадобится во всех классах.
В том и дело, что класс Object абсолютно пуст. Может между свойствами и методами классов, которые наследуют класс Object, будет особая взаимосвязь? Хотя, честно говоря, я этого никак не ощутил.
Цитата:
А абстрактный он потому, что тебе экземпляры его не нужны
Почему нельзя использовать просто class, а не abstract class? Я же не собираюсь создавать экземпляры. Может дело в памяти?

Последний раз редактировалось php5user; 31.08.2009 в 01:55..
 
Старый 31.08.2009, 09:46   #4
Цитата:
Почему нельзя использовать просто class, а не abstract class? Я же не собираюсь создавать экземпляры. Может дело в памяти?
А еще можно не использовать private, protect, public, пространства имен и еще много всего.

Вообще abstract используется на всякий случай. Особенно, если пишется библиотека для использования сторонними разработчиками.
 
Старый 31.08.2009, 10:37   #5
Цитата:
private, protect, public,
Если я не ошибаюсь, protected.
Цитата:
пространства имен
Разработчики отказались от поддержки этой возможности.
Цитата:
А еще можно не использовать private, protect, public, пространства имен и еще много всего.
Нет. Это все-таки переборщил ты. Ни разу не обходился без модификаторов доступа public, private, protected, static. Но abstract.
Цитата:
Вообще abstract используется на всякий случай. Особенно, если пишется библиотека для использования сторонними разработчиками.
Ну как это на всякий случай? Неужели сам так думаешь?

И все же - зачем присваивать всем классам один родительский класс Object и тем более делать его абстрактным?
 
Старый 31.08.2009, 11:39   #6
php5user, вы меня не совсем правильно поняли.
Я говорил: "всегда можно в Object напихать какой-нибудь хренотени". это значит, что тем самым мы закладываемся на будущее. Ну вдруг нам понадобиться чтото общее для всех классов дописать. А польза от abstract не меньшая, чем от private/protected.... Некоторые языки вообще запрещают определять абстрактные функции в неабстрактных классах, и php в их числе. Видимо разработчики именно под эту возможность и закладывались...
 
Старый 31.08.2009, 11:49   #7
php5user, сколько раз я сам пользовался классами без использования модификаторов доступа. Без них спокойно можно прожить. В принципе, как и без ООП, реализовав подобие ООП в структурном языке.
Если ты точно знаешь, что не будешь создавать объекты какого-то класса, то лучше этот класс пометить как обстрактный.

http://docs.php.net/manual/ru/langua....rationale.php
Не нашел на php.net информации, что разработчики отказались от пространств имен.
 
Старый 31.08.2009, 20:52   #8
Вообщем, конкретизировано это звучит так:

1. Абстрактные классы чаще всего используются для создания семейства объектов, обладающих единым интерфейсом.
2. Также они используются, когда нужно запретить создание объекта некоторого класса.

Считаю пункт 1 более вероятным для ситуации с "abstract class Object".

Всем спасибо.

Последний раз редактировалось php5user; 31.08.2009 в 20:53.. Причина: Добавлено сообщение
 
Старый 01.09.2009, 09:55   #9
php5user, собсна, Асмодиан это и говорил.
 
Старый 01.09.2009, 09:55
Закрытая тема


Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Framework - и class ivan341 ASP, Perl, PHP и MySQL 38 01.04.2010 00:12
Как убрать рамку с элемента <object> в html в IE7? alexey25 HTML, CSS, JavaScript 3 09.10.2007 20:00
Rollover object alexG HTML, CSS, JavaScript 1 18.10.2006 16:08
class=tabs Intery HTML, CSS, JavaScript 3 12.07.2005 09:19
Есть ли class для onMouseOver... bond HTML, CSS, JavaScript 4 02.10.2003 16:03


Текущее время: 22:29. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум