Мне кажется, что оба interface
и abstract function
очень похожи,интерфейс и абстрактный общественные функции
это как для того, чтобы какой-то метод должен быть реализован,
так какая разница?
Мне кажется, что оба interface
и abstract function
очень похожи,интерфейс и абстрактный общественные функции
это как для того, чтобы какой-то метод должен быть реализован,
так какая разница?
Цитирование: (Very Good Explantion по электронной Satis)
Интерфейс
Интерфейс представляет собой договор: парень писать интерфейс сказать: «Эй, Я согласен с тем, что выглядит так », а парень, использующий интерфейс, говорит« ОК, класс, который я пишу, выглядит так ».
И интерфейс пустой оболочки, существуют только подписи (имя/params/return type) методов. Методы ничего не содержат. Интерфейс ничего не может сделать. Это всего лишь образец.
например (псевдо-код):
// I say all motor vehicles should look like that :
interface MotorVehicle
{
void run();
int getFuel();
}
// my team mate complies and write vehicle looking that way
class Car implements MotoVehicle
{
int fuel;
void run()
{
print("Wrroooooooom");
}
int getFuel()
{
return this.fuel;
}
}
Реализация интерфейса потребляют очень мало CPU, потому что это не класс, просто куча имен, и для них нет дорогой поиска, чтобы сделать. Это здорово, когда это имеет значение, например, во встроенных устройствах.
Абстрактные классы
абстрактные классы, в отличие от интерфейсов, классы. Есть более дорогие в использовании, потому что есть поиск, когда вы наследуете их.
Абстрактные классы очень похожи на интерфейсы, но у них есть что-то еще: вы можете определить поведение для них. Это больше о парне, который говорит: «Эти классы должны выглядеть так, и они получили это вместе, так что заполните пробелы!».
например:
// I say all motor vehicles should look like that :
abstract class MotorVehicle
{
int fuel;
// they ALL have fuel, so why let others implement that ?
// let's make it for everybody
int getFuel()
{
return this.fuel;
}
// that can be very different, force them to provide their
// implementation
abstract void run();
}
// my team mate complies and write vehicle looking that way
class Car extends MotorVehicule
{
void run()
{
print("Wrroooooooom");
}
}
В языках без множественного наследования, разница очень важна. В терминах php или Java класс может реализовывать несколько интерфейсов, но может наследовать только один родительский класс, который может быть абстрактным.
В C++, например, различие становится менее важным.
Duplicates http://stackoverflow.com/questions/1221512/abstract-class-and-interface-class –
Другой дубликат http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general- oo –
Извините, это ** опечатка **, я имею в виду 'абстрактная функция' – user198729