abstract-class- все статьи тега
Почему в абстрактном классе Java есть модификатор приватного доступа, даже если мы не можем создать экземпляр абстрактного класса?
Я знаю, что это не очень хорошая практика кодирования, чтобы объявить метод как private в классе abstract. Даже если мы не можем создать экземпляр класса abstract, Почему модификатор доступа private доступен в классе abstract, и какова область его применения в классе abstract? В каком сценарии спецификатор доступа private используется в классе abstract? Проверьте этот код, где Vehicle класс является абстрактным и Car расширяет транспортное средство. package com.vehicle; abstract class Vehicl ...
Статические методы в интерфейсе / абстрактном классе
Во-первых, я понимаю причины, по которым интерфейс или абстрактный класс (в терминологии .NET/C#) не может иметь абстрактных статических методов. Мой вопрос тогда больше сосредоточен на лучшем дизайнерском решении. Мне нужен набор "вспомогательных" классов, которые все имеют свои собственные статические методы, такие что если я получаю объекты A, B и C от стороннего поставщика, я могу иметь вспомогательные классы с такими методами, как AHelper.RetrieveByID(string id); AHelper.RetrieveByName ...
переопределенный метод вызывается дважды
У меня есть фрагмент кода <?php abstract class Testing{ public abstract function tester(); public function testing(){ $this->tester(); } } class Test extends Testing{ public function tester(){ echo 'test'; } } $t = new Test(); $t->testing(); Предполагается, что у меня есть выход test, но выход, который я получаю, - это testtest? Почему tester() вызывается дважды? Ссылка ссылка на ideon ...
Интерфейс против абстрактного класса (общий OO)
недавно у меня было два телефонных интервью, где меня спросили о различиях между интерфейсом и абстрактным классом. Я объяснил им все, что мог придумать, но, похоже, они ждут, чтобы я упомянул что-то конкретное, и я не знаю, что это такое. из моего опыта, я думаю, справедливо следующее. Если я упускаю важный момент, пожалуйста, дайте мне знать. интерфейс: каждый способ объявленный в интерфейсе должен быть реализован в подклассе. В интерфейсе могут существовать только события, делегаты, свойст ...
Создание абстрактного класса в Objective-C
Я изначально программист Java, который теперь работает с Objective-C. Я хотел бы создать абстрактный класс, но это не представляется возможным в Objective-C. Возможно ли это? Если нет, то как близко к абстрактному классу я могу получить в Objective-C? ...
Может ли абстрактный класс иметь конструктор?
абстрактный класс может иметь конструктор? Если да, то как его можно использовать и для каких целей? ...
Разница между абстрактным классом и интерфейсом в Python
в чем разница между абстрактным классом и интерфейсом в Python? ...
Как модульный тест абстрактных классов: расширение с заглушками?
Мне было интересно, как тестировать абстрактные классы и классы, которые расширяют абстрактные классы. должен ли я тестировать абстрактный класс, расширяя его, заглушая абстрактные методы, а затем тестировать все конкретные методы? Затем проверьте только методы, которые я переопределяю, и проверьте абстрактные методы в модульных тестах для объектов, которые расширяют мой абстрактный класс? должен ли я иметь абстрактный тестовый случай, который можно использовать для проверки методов абстрактно ...
Pimpl идиома против чистого интерфейса виртуального класса
Мне было интересно, что заставит программиста выбрать либо идиому Pimpl, либо чистый ВИРТУАЛЬНЫЙ КЛАСС и наследование. Я понимаю, что идиома pimpl поставляется с одной явной дополнительной косвенностью для каждого публичного метода и накладных расходов на создание объекта. чистый виртуальный класс, с другой стороны, поставляется с неявной косвенностью(vtable) для наследования реализации, и я понимаю, что нет накладных расходов на создание объекта. EDIT: но вам нужно фабрика, если вы создаете о ...
В PHP абстрактные свойства
есть ли способ определить свойства абстрактного класса в PHP? abstract class Foo_Abstract { abstract public $tablename; } class Foo extends Foo_Abstract { //Foo must 'implement' $property public $tablename = 'users'; } ...
Как реализовать абстрактный класс в Ruby?
Я знаю, что в ruby нет понятия абстрактного класса. Но если это вообще нужно реализовать, как это сделать? Я попробовал что-то вроде... class A def self.new raise 'Doh! You are trying to write Java in Ruby!' end end class B < A ... ... end но когда я пытаюсь создать экземпляр B, он внутренне собирается вызвать A.new который собирается вызвать исключение. кроме того, модули не могут быть созданы, но они также не могут быть унаследованы. новый частный метод также не будет работ ...
Когда я должен использовать интерфейсы вместо абстрактных классов? [дубликат]
этот вопрос уже есть ответ здесь: Абстрактный класс vs интерфейс в Java 14 ответов мне было интересно, когда я должен использовать интерфейсы. давайте подумаем о следующем: public abstract class Vehicle { abstract float getSpeed(); } и : public interface IVehicle { float getSpeed(); } Я могу легко реализовать оба они имеют одинаковую функциональность... НО Я также могу добавить некоторые пере ...
Почему мы не можем объявить std:: vector?
Потратив довольно много времени на разработку в C#, я заметил, что если вы объявляете абстрактный класс с целью использования его в качестве интерфейса, вы не можете создать вектор этого абстрактного класса для хранения экземпляров дочерних классов. #pragma once #include <iostream> #include <vector> using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout < ...
Если абстрактный класс имеет serialVersionUID
в java, если класс реализует сериализуемый, но является абстрактным, должен ли он иметь объявленный serialVersionUID long, или только подклассы требуют этого? в этом случае действительно предполагается, что все подклассы имеют дело с сериализацией, поскольку цель типа должна использоваться в вызовах RMI. ...
Почему я не могу создать абстрактный конструктор на абстрактном классе C#?
Я создаю абстрактный класс. Я хочу, чтобы каждый из моих производных классов был вынужден реализовать определенную подпись конструктора. Таким образом, я сделал то, что сделал бы, если бы хотел заставить их реализовать метод, я сделал абстрактный. public abstract class A { abstract A(int a, int b); } однако я получаю сообщение о том, что абстрактный модификатор недействителен в этом элементе. Моей целью было заставить такой код. public class B : A { public B(int a, int b) : base(a, b ...