История изменений
Исправление wandrien, (текущая версия) :
Но это само собой, то чем является объект определяют его методы. Добавил стулу метод летать и он полетел.
Это утверждение верно в случае duck typing или в случае систем типов, в которых мы можем вывести тип из наличия методов с заданной сигнатурой, но – не в общем случае.
В случае объектных моделей, используемых в Java, в COM или в GObject, это приобретает форму:
Стул implements Летающее
Мебель *какая_то_мебель = ...;
Летающее *летающая_мебель = cast(какая_то_мебель, Летающее);
if (летающая_мебель)
летающая_мебель->полетели();
else
raise Exception("Объект не поддерживает интерфейс Летающее");
Исправление wandrien, :
Но это само собой, то чем является объект определяют его методы. Добавил стулу метод летать и он полетел.
Это утверждение верно в случае duck typing или в случае систем типов, в которых мы можем вывести тип из наличия методов с заданной сигнатурой, но – не в общем случае.
В случае объектных моделей, используемых в Java, в COM или в GObject, это приобретает форму:
Стул implements Летающее
Мебель * какая_то_мебель = ...;
Летающее *летающая_мебель = cast(какая_то_мебель, Летающее);
if (летающая_мебель)
летающая_мебель->полетели();
else
raise Exception("Объект не поддерживает интерфейс Летающее");
Исходная версия wandrien, :
Но это само собой, то чем является объект определяют его методы. Добавил стулу метод летать и он полетел.
Это утверждение верно в случае duck typing или в случае систем типов, в которых мы можем вывести тип из наличия методов с заданной сигнатурой, но – не в общем случае.
В случае объектных моделей, используемых в Java, в COM или в GObject, это приобретает форму:
Стул implements Летающее.
Мебель * какая_то_мебель = ...;
Летающее *летающая_мебель = cast(какая_то_мебель, Летающее);
if (летающая_мебель)
летающая_мебель->полетели();
else
raise Exception("Объект не поддерживает интерфейс Летающее")