Вопросы с тегом «polymorphism»

В информатике полиморфизм - это функция языка программирования, которая позволяет единообразно обрабатывать значения разных типов данных.

1488
Когда использовать виртуальные деструкторы?

У меня есть четкое понимание большинства ОО-теорий, но меня смущает одна вещь - виртуальные деструкторы. Я думал, что деструктора всегда называют независимо от того, что и для каждого объекта в цепочке. Когда вы собираетесь сделать их виртуальными и...

771
Является ли List <Dog> подклассом List <Animal>? Почему дженерики Java не являются неявно полиморфными?

Я немного озадачен тем, как дженерики Java обрабатывают наследование / полиморфизм. Предположим следующую иерархию - Животное (родитель) Собака - Кот (Дети) Итак, предположим, у меня есть метод doSomething(List<Animal> animals). По всем правилам наследования и полиморфизма я бы предположил,...

347
Полиморфизм против переопределения против перегрузки

С точки зрения Java, когда кто-то спрашивает: что такое полиморфизм? Будет ли перегрузка или перегрузка приемлемым ответом? Я думаю, что это немного больше, чем это. Если у вас есть абстрактный базовый класс, который определил метод без реализации, и вы определили этот метод в подклассе, это все...

220
Почему переопределенная функция в производном классе скрывает другие перегрузки базового класса?

Рассмотрим код: #include <stdio.h> class Base { public: virtual void gogo(int a){ printf(" Base :: gogo (int) \n"); }; virtual void gogo(int* a){ printf(" Base :: gogo (int*) \n"); }; }; class Derived : public Base{ public: virtual void gogo(int* a){ printf(" Derived :: gogo (int*) \n"); };...

172
В чем основное различие между наследованием и полиморфизмом?

Сегодня мне поставили этот вопрос в конце экзамена по открытой книге модуля, и я потерял себя. Я читал, Head first Javaи оба определения казались абсолютно одинаковыми. Мне просто интересно, какова ГЛАВНАЯ разница для моего собственного разума. Я знаю, что есть ряд подобных вопросов, но ни один из...

145
Повторно вызвать исключение с другим типом и сообщением, сохраняя существующую информацию

Я пишу модуль и хочу иметь единую иерархию исключений для исключений, которые он может вызывать (например, наследование от FooErrorабстрактного класса для всех fooособых исключений модуля). Это позволяет пользователям модуля перехватывать эти конкретные исключения и при необходимости обрабатывать...

140
Перейти к реализации интерфейса в Eclipse IDE

Вы знаете, как в Eclipse нажатие F3на метод приводит к его объявлению? У меня есть метод, который является частью интерфейса; щелкнув F3по нему, я естественным образом попадаю в интерфейс объявления. Очевидно, что существует объект, реализующий этот интерфейс, и именно здесь метод фактически...

137
В Java, как я могу вызвать метод базового класса из переопределяющего метода в производном классе?

У меня есть два класса Java: B, который расширяет другой класс A, следующим образом: class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { /* Another code */ } } Я хотел бы позвонить A.myMethod()от B.myMethod(). Я из мира C ++ , и я не знаю, как сделать эту...

129
Полиморфизм в C ++

НАСКОЛЬКО МНЕ ИЗВЕСТНО: C ++ предоставляет три различных типа полиморфизма. Виртуальные функции Перегрузка имени функции Перегрузка оператора В дополнение к трем вышеупомянутым типам полиморфизма существуют и другие виды полиморфизма: во время выполнения время компиляции специальный полиморфизм...

127
Как вызвать base.base.method ()?

// Cannot change source code class Base { public virtual void Say() { Console.WriteLine("Called from Base."); } } // Cannot change source code class Derived : Base { public override void Say() { Console.WriteLine("Called from Derived."); base.Say(); } } class SpecialDerived : Derived { public...

125
Частный виртуальный метод в C ++

В чем преимущество создания виртуального частного метода в C ++? Я заметил это в проекте C ++ с открытым исходным кодом: class HTMLDocument : public Document, public CachedResourceClient { private: virtual bool childAllowed(Node*); virtual PassRefPtr<Element> createElement(const...

118
Будет ли GetType () возвращать наиболее производный тип при вызове из базового класса?

Будет ли GetType () возвращать наиболее производный тип при вызове из базового класса? Пример: public abstract class A { private Type GetInfo() { return System.Attribute.GetCustomAttributes(this.GetType()); } } public class B : A { //Fields here have some custom attributes added to them } Или я...

110
Какова цель Rank2Types?

Я не очень разбираюсь в Haskell, поэтому это может быть очень простой вопрос. Какие языковые ограничения снимает Rank2Types ? Разве функции в Haskell не поддерживают полиморфные...

110
Как реализованы виртуальные функции и vtable?

Все мы знаем, что такое виртуальные функции в C ++, но как они реализованы на глубоком уровне? Можно ли изменить vtable или даже получить к ней прямой доступ во время выполнения? Существует ли vtable для всех классов или только для тех, у которых есть хотя бы одна виртуальная функция? Имеют ли...

106
Откуда берутся сбои «вызова чисто виртуальной функции»?

Я иногда замечаю программы, которые вылетают на моем компьютере с ошибкой: «вызов чистой виртуальной функции». Как эти программы вообще компилируются, если объект не может быть создан из абстрактного...