абстракция или интерфкйс

абстракция или интерфкйс

Здравствуйте! Всегда использовал ООП в проектах. В основном использовал классы обьектные (лучшее слова не подобрал) и статические, но решил дочитать мануал до конца :). Не понимаю отличия абстрактных и интерфейсов. Ясное дело, что синтаксис другой и первый и второй вид определяют методы до их описания. Но в остальном розьясните, если не трудно. Смотрел поиск и нашел тему о БД, где человек описывает разницу, но из его слов я только понял, что в интерфейсах определяются только методы, а в абстракции все вместе. Неужели разработчики PHP сделали специально структурную единицу для описания ТОЛЬКО методов?
Спасибо.
 
Видимо не до конца..

-~{}~ 13.08.07 14:44:

Разница между абстрактным классом и интерфейсом такая же как между эскизом и готовым автомобилем, но без стекол, например. Бронированные ставить или обычные, решайте сами. А эскиз это всего лишь эскиз, ничего материального (читай "класс") он за собой не несет.
 

Alexandre

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

itprog

Cruftsman
Curly-fingers
интерфейс описывает интерфейс работы с этим классом, а абстрактный это незаконченный класс
 
простой класс это уже класс, он уже реализован. интерфейс это интерфейс, читай "совсем не класс". абстрактный класс -- это класс который еще не совсем класс :), но уже немного реализован.
 
ваши комментарии никчему. если бы сразу апстену, тогда бы ничего не знал.
пысы не надо разводить флейм.
 
коммент выше было к mischo.

ну а вы используете их постоянно? я просто не вижу задачи к которым их можно применить
 
Curly-fingers
Да, мы их используем постояннийще :).

-~{}~ 13.08.07 14:55:

Curly-fingers
Если задачи не видишь, то зачем они тебе?
 
ну вот те например один из случаев:
PHP:
	interface AccessOne
	{
		public function myCoolAccessMethod($argument);
	}
	
	interface AccessTwo
	{
		public function myUglyAccessMethod($argument);
	}
	
	abstract class AccessUni implements AccessOne, AccessTwo
	{
		public function myCoolAccessMethod($arguments)
		{
			return $this->myUglyAccessMethod($arguments);
		}
	}
	
	class AccessImpl1 extends AccessUni
	{
		public function myUglyAccessMethod($arguments)
		{
			echo $arguments;
		}
	}
	
	class AccessImpl2 extends AccessUni
	{
		public function myUglyAccessMethod($arguments)
		{
			var_dump($arguments);
		}
	}
пысы: если шо не стесняйтесь, помидор всем хватит.

ну и вобщем тут уже не ман надо читать, а что-нибуть поинтереснее...
 
тут важнее знать когда она есть, эта необходимость :), а что использовать разрулить не так уж проблематично..
 
itprog
а мой пример этого не иллюстрирует :). эта просто частный случай.. один из "зачем"..

-~{}~ 13.08.07 15:03:

мой пример ваще какашка, я же сразу про помидоры написал ;)
 
Сверху