в чем разница между абстрактным классом и абстрактной функцией

Я знаю, что если я создам класс abstract, то я не смогу создать его экземпляр, и это будет просто базовый класс (расширяющий его для других классов). Теперь я хочу знать, что такое функция abstract? (или также есть свойство abstract?)

Я видел функцию без определения в abstract классе (к тому же эта функция была абстрактной), так почему? Что-то вроде этого:

Abstract class test{
      Abstract function index();
}

person Community    schedule 08.07.2015    source источник


Ответы (3)


Абстрактный класс не может быть создан. Допустим, у вас есть:

Abstract class People {

}

Вы не можете сделать $people = new People();

Вам нужно расширить его, чтобы иметь возможность создать его экземпляр, например:

class Man extends People {

}

$people = new Man();

Что касается абстрактных методов, то они содержат сигнатуру метода только в абстрактном классе и ДОЛЖНЫ быть реализованы в дочерних классах.

Abstract class People {
  abstract public function getAge();
}
class Man extends People {
  public function getAge() {
    //Blah Blah
  }
}
person Mindastic    schedule 08.07.2015
comment
Ах, я вижу, не могли бы вы сказать мне, есть ли абстрактные переменные? - person ; 08.07.2015
comment
Нет, проверьте этот пост: stackoverflow.com/questions/7634970/php-abstract-properties - person Mindastic; 08.07.2015

Абстрактная функция — это функция, которая еще не реализована. Реализация абстрактной функции должна выполняться в унаследованных классах.

Класс с абстрактной функцией должен быть абстрактным классом.

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

person Mat    schedule 08.07.2015

Из: http://php.net/manual/en/language.oop5.abstract.php

PHP 5 представляет абстрактные классы и методы. Классы, определенные как абстрактные, не могут быть созданы, и любой класс, содержащий хотя бы один абстрактный метод, также должен быть абстрактным. Методы, определенные как абстрактные, просто объявляют сигнатуру метода — они не могут определять реализацию.

person Allende    schedule 08.07.2015