В чем разница между абстрактной функцией и виртуальной функцией? В каких случаях рекомендуется использовать виртуальный или абстрактный? Какой из них
abstract - это ключевое слово, используемое множеством объектно-ориентированных языков программирования. Методы и классы могут быть помечены как абстрактные, чтобы указать, что они не содержат полной реализации логики приложения и должны быть расширены. Абстрактные классы не могут быть созданы и служат цели предоставления единообразного интерфейса для их подклассов, а также реализации общих методов, которые не нужно повторно реализовывать для каждого подкласса.
В чем разница между абстрактной функцией и виртуальной функцией? В каких случаях рекомендуется использовать виртуальный или абстрактный? Какой из них
Во время одного из моих интервью меня спросили: «Можем ли мы создать экземпляр абстрактного класса?» Мой ответ был «Нет, мы не можем». Но интервьюер сказал мне: «Неправильно, мы можем». Я немного поспорил об этом. Затем он сказал мне попробовать это дома. abstract class my { public void mymethod()...
Как я могу сделать класс или метод абстрактным в Python? Я пытался переопределить __new__() так: class F: def __new__(cls): raise Exception("Unable to create an instance of abstract class %s" %cls) но теперь, если я создам класс G который наследует от Fтак: class G(F): pass тогда я не могу создать...
Рассмотрим пример (который компилируется в Java) public abstract interface Interface { public void interfacing(); public abstract boolean interfacing(boolean really); } Почему интерфейс должен быть «объявлен» абстрактным? Есть ли другие правила, которые применяются с абстрактным интерфейсом?...
Я изучаю классы в файле Jar и хочу найти те, которые не являются абстрактными. Я могу решить эту проблему, создавая экземпляры классов и перехватывая InstantiationException, но это приводит к снижению производительности, так как некоторые классы сильно загружаются. Я не могу найти ничего такого,...
Классы данных, кажется, заменяют старомодные POJO в Java. Вполне ожидаемо, что эти классы позволят наследовать, но я не вижу удобного способа расширить класс данных. Что мне нужно, это что-то вроде этого: open data class Resource (var id: Long = 0, var location: String = "") data class Book (var...
Сегодня я использовал функцию рефакторинга «pull interface» в Eclipse, чтобы создать интерфейс на основе существующего класса. В диалоговом окне предлагается создать все новые методы нового интерфейса как «абстрактные» методы. Какая польза от этого? Я думал, что тот факт, что вам было разрешено...
После включения строгих предупреждений в PHP 5.2 я увидел множество предупреждений о строгих стандартах из проекта, который изначально был написан без строгих предупреждений: Строгие стандарты : статическая функция Program :: getSelectSQL () не должна быть абстрактной в Program.class.inc...
Могу ли я определить абстрактный класс без добавления абстрактного
Можно ли смоделировать абстрактный базовый класс в JavaScript? Как это сделать наиболее элегантно? Скажем, я хочу сделать что-то вроде: - var cat = new Animal('cat'); var dog = new Animal('dog'); cat.say(); dog.say(); Он должен выводить: "лай",...
Методы C # в интерфейсах объявляются без использования virtualключевого слова и переопределяются в производном классе без использования overrideключевого слова. Для этого есть причина? Я предполагаю, что это всего лишь удобство языка, и, очевидно, CLR знает, как с этим справиться (методы не...
Почему классы Java не могут иметь абстрактные поля, как у них могут быть абстрактные методы? Например: у меня есть два класса, которые расширяют один и тот же абстрактный базовый класс. Каждый из этих двух классов имеет идентичный метод, за исключением константы String, которая является сообщением...
Есть ли в Swift стандартный способ сделать "чистую виртуальную функцию", т.е. тот, который должен быть переопределен каждым подклассом, и который, если это не так, вызывает ошибку времени компиляции?...