отличие интерфейса от обстрактного класса?

DDT

Новичок
отличие интерфейса от обстрактного класса?

Привет.

сделал интерфес:
PHP:
interface ObjInt
{
  protected function method1();
}
сделал реализующий его класс:
PHP:
class Object implements ObjInt
{
   protacted function method1 {};
}
Ругается:
Fatal error: Access type for interface method method1() must be omitted




После того как интерфейс заменил абстрактным классом:
PHP:
abstract class ObjInt
{
   protected abstract function method1();
}
и сделал его наследование:
PHP:
class Object extends ObjInt
{
   public function method1();
}
все заработало :/

В чем отличие, чего не знаю?
 

DDT

Новичок
Автор оригинала: kruglov
Ну дык которое слово непонятно?
Нееее, с ошибкой-то все понятно. Она исчезла с использованием абстрактного класса.

Но зачем же тогда придуман интерфейс?

Где его можно применить, что нельзя использовать абстрактный класс?
 
DDT
абстрактный класс это уже частичная реализация, которая допускает использование в себе protected и private методов, но зачем это в интерфейсе, сам подумай, если интерфейс это _вообще_не_класс? Как ты получишь доступ к protected/private методам объекта реализующего интерфейс?
 

Sokil.Dmytro

Новичок
сложность наверное вызывает перевод слова omitted. и подсветка синтаксиса даже на форуме не помогает :)
 
мне кажется что сложность вызывает количество выпитого алкоголя ;)
 

DDT

Новичок
Я так понимал, что если класс реализует интерфейс, то в этом интерфейсе можно указать protected/private методы.

А интерфейс не только классы могут реализовывать?
 

WP

^_^
Пойми, абстрактный класс нужен для того чтобы описать методы без их реализации, но так чтобы было видно как их использовать. При этом не все методы/свойства абстрактного класса обязаны быть абстрактными.
А интерфейс это для того чтобы полностью отдельно архитектор задавал класс, а потом к нему писалась реализация.
 

zerkms

TDD infected
Команда форума
чтобы описать методы без их реализации, но так чтобы было видно как их использовать. При этом не все методы/свойства абстрактного класса обязаны быть абстрактными.
А интерфейс это для того чтобы полностью отдельно архитектор задавал класс, а потом к нему писалась реализация.
зачот ;)) перечитывал раза 3 ;)

-~{}~ 28.08.07 10:34:

Но зачем же тогда придуман интерфейс?

Где его можно применить, что нельзя использовать абстрактный класс?
интерфейс - своеобразное соглашение между клиентом, использующим код и автором класса, своеобразный протокол общения
именно интерфейс может гарантировать что у заданного класса будут необходимые методы, которые будут принимать необходимые параметры и возвращать данные необходимого типа. к тому же - класс может реализовывать несколько интерфейсов
 

ustas

Элекомист №1
Читал как то что в свое время OOP всех задо***ло. Вот ломка то была, до сих пор ломает. И до сих пор ни один язык не реализует всю идеалогию OOP наверно.
 

crocodile2u

http://vbolshov.org.ru
zerkms
Возьму на вооружение фразу "интерфейс - это протокол общения". Понравилось.
 

whirlwind

TDD infected, paranoid
Интерфейс - это то, с чем взаимодействует пользователь класса. Доступа к защищенным/приватным элементам извне класса нет. Намек понятен?
 

ustas

Элекомист №1
mishco
ну давай я тебе интефейчов отсыплю, толко со своим пакетом.
 

R-team

Новичок
Абстрактные методы имеют только обявление, но не имеют реализации.

Интерфейс описывает набор методов,которыми должен обладать класс, реализующий соответственный интерфейс...

-~{}~ 30.08.07 11:45:

И еще автор, программирование тонкое дело, за синтаксическими "АШИПКАМИ" в php коде, даже на форуме следить надо...

ладно, ладно... прочел я тему полностью... понял что по чем...
 
Сверху