Публикации по теме 'polymorphism'
Объектно-ориентированное программирование на простом английском языке
Если вы читаете этот пост, значит, возможно, вы похожи на меня. Вам легче понять абстрактные концепции, если вы можете связать их с конкретными идеями или объектами. Если это правда о вас, то вы попали в нужный пост. Без лишних слов, приступим.
Что такое объектно-ориентированное программирование (ООП)?
Объектно-ориентированное программирование - это парадигма программирования, которая требует от вас думать и моделировать свои программы как объекты реального мира. Вам необходимо..
Немного ООП-теории
Немного ООП-теории
Отрывок из книги «Практическое программирование, третье издание» Пола Грайса, Дженнифер Кэмпбелл, Джейсона Монтохо.
In this excerpt:
* Encapsulation
* Polymorphism
* Inheritance
Классы и объекты — два мощных инструмента программирования. Они позволяют хорошим программистам делать многое за очень короткое время, но с ними плохие программисты могут создать настоящий беспорядок. В этом разделе будут представлены некоторые основные теории, которые помогут..
Концепция объектно-ориентированного программирования
Введение
До объектно-ориентированного программирования у нас было процедурное программирование, которое имело множество недостатков, таких как невозможность повторного использования кода во всей программе. По мере роста вашей программы вы создаете множество функций. Это создает такую взаимозависимость между созданными вами функциями. Когда вы вносите изменения в функцию, другая функция тормозит. Объектно-ориентированное программирование пришло для решения этой и многих других..
Что такое полиморф?
Это должно быть хорошо знакомо любому, кто когда-либо писал код на объектно-ориентированном языке, таком как C ++, Java, C # и т. Д. Полиморфизм подтипов относится к классической иерархии типов, включающей наследование и отношения между объектами. Синтаксис, используемый в F # для обозначения таких отношений, требует некоторого привыкания:
В качестве альтернативы вы можете объявить интерфейс
Частным случаем полиморфизма подтипа является, по сути, размеченное объединение...
Что такое полиморфизм?
Полиморфизм — это способность объекта принимать множество форм. Наиболее распространенное использование полиморфизма в объектно-ориентированном программировании (ООП) происходит, когда ссылка на родительский класс используется для ссылки на объект дочернего класса.
Любой объект Java, который может пройти более одного теста IS-A, считается полиморфным. В Java все объекты Java полиморфны, поскольку любой объект пройдет тест IS-A для своего типа и для класса Object.
Собака ЕСТЬ-Животное..
Вопросы по теме 'polymorphism'
Оценка выражений и обход дерева с использованием полиморфизма? (аля Стив Йегге)
Этим утром я читал Steve Yegge: When Polymorphism Fails , когда наткнулся на вопрос, который его коллега задавал потенциальным сотрудникам, когда они приходили на собеседование в Amazon.
В качестве примера полиморфизма в действии давайте...
6655 просмотров
schedule
04.06.2023
Полиморфизм против переопределения против перегрузки
В терминах Java, когда кто-то спрашивает:
что такое полиморфизм?
Будет ли приемлемым ответом перегрузка или переопределение ?
Я думаю, здесь есть кое-что еще.
ЕСЛИ у вас был абстрактный базовый класс, который определил метод без...
278776 просмотров
schedule
02.02.2022
Полиморфная фабрика/getInstance() в Java
Я стремлюсь создать набор объектов, каждый из которых имеет уникальный идентификатор. Если объект с таким идентификатором уже существует, я хочу использовать существующий объект. В противном случае я хочу создать новый. Я стараюсь не использовать...
16181 просмотров
schedule
01.03.2022
Наследование в Java - не удается найти конструктор символов
Я работаю над классом, который наследуется от другого класса, но я получаю сообщение об ошибке компилятора «Не удается найти конструктор символов Account ()». В основном то, что я пытаюсь сделать, это создать класс InvestmentAccount, который...
32720 просмотров
schedule
14.02.2023
Переопределение функции C ++
У меня есть три разных базовых класса:
class BaseA
{
public:
virtual int foo() = 0;
};
class BaseB
{
public:
virtual int foo() { return 42; }
};
class BaseC
{
public:
int foo() { return 42; }
};
Затем я получаю от базы следующим...
40537 просмотров
schedule
10.04.2023
Почему перегрузка функций-членов неявного преобразования работает по типу возвращаемого значения, в то время как это не разрешено для обычных функций?
C++ не допускает полиморфизма для методов на основе их возвращаемого типа. Однако при перегрузке функции-члена неявного преобразования это кажется возможным.
Кто-нибудь знает, почему? Я думал, что операторы обрабатываются как методы внутри....
1668 просмотров
schedule
21.09.2023
Какой метод .Equals() использовать
В этом вопросе . мы обнаружили, что в .NET 1.1 Array.IndexOf(array, value) искал элемент с
value.Equals(arrayElement) == true
в то время как .NET 2.0 изменил его для поиска элемента с
arrayElement.Equals(value) == true
Очевидно,...
169 просмотров
schedule
15.07.2022
C++ Коллекция экземпляров, реализующих чистый виртуальный класс
Я работаю на кроссплатформенном С++, и некоторые классы определены так: (сильно упрощено для этого примера)
class ExampleBase
{
public:
ExampleBase( int blah ) : blah_test(blah) { }
virtual void DoSomething( ) = 0;
private:
int...
894 просмотров
schedule
06.05.2023
Почему это работает? Перегрузка метода + переопределение метода + полиморфизм
В следующем коде:
public abstract class MyClass
{
public abstract bool MyMethod(
Database database,
AssetDetails asset,
ref string errorMessage);
}
public sealed class MySubClass : MyClass
{
public override bool...
2968 просмотров
schedule
21.12.2023
Когда использовать перечисления, а когда заменить их классом со статическими членами?
Недавно мне пришло в голову, что следующее (примерное) перечисление...
enum Color
{
Red,
Green,
Yellow,
Blue
}
... можно заменить, казалось бы, более типобезопасным классом:
class Color
{
private Color() { }...
32386 просмотров
schedule
18.04.2022
Как вызвать 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()
{...
115298 просмотров
schedule
13.10.2023
Кастинг классы
У меня 2 класса:
открытый класс ClassA
открытый класс ClassB (из другого пространства имен): ClassA
Я использую метод в ClassA
public static ClassA Deserialize(string path)
{
ClassA classA;
//classA=code...
return classA;
}
Я...
356 просмотров
schedule
23.11.2022
Вопрос по дизайну (наследование, полиморфизм)
У меня есть вопрос о проблеме, с которой я борюсь. Надеюсь, вы можете терпеть меня.
Представьте, что у меня есть класс Object, представляющий базовый класс иерархии физических объектов. Позже я наследую от него, чтобы создать классы Object1D,...
294 просмотров
schedule
12.05.2024
Еще один вопрос, связанный с дизайном C++
Привет!
Я пытаюсь найти некоторые оптимальные решения в шаблонах кодирования C++, и это один из моих вопросов, связанных с игровым движком .
Взгляните на объявление игрового объекта (я удалил почти все, что не имеет отношения к вопросу) ....
284 просмотров
schedule
25.08.2022
Перегрузка общих неявных преобразований
У меня небольшая проблема со scala (версия 2.8.0RC1) с неявными преобразованиями. Всякий раз, когда импортируется более одного неявного преобразования, первое из них затеняется. Вот код, в котором проявляется проблема:
// containers
class...
352 просмотров
schedule
24.10.2023
Django: способ проверить, к какому классу относится общее отношение content_object?
В моем проекте есть класс NewsItem. Экземпляры NewsItem действуют как оболочка. Они могут быть связаны либо с экземпляром ArtWork, либо с экземпляром объявления.
Вот как выглядит модель NewsItem:
class NewsItem(models.Model):
content_type...
503 просмотров
schedule
06.02.2022
Вызов переопределенного метода из ctor родительского класса
Я попытался вызвать переопределенный метод из конструктора родительского класса и заметил различное поведение в разных языках.
C++ – вторит A.foo()
class A{
public:
A(){foo();}
virtual void foo(){cout<<"A.foo()";}
};...
7649 просмотров
schedule
15.07.2022
Рекомендации для C++ полиморфного бинарного интерфейса ввода-вывода с возможностью поиска
Я использовал std::istream и ostream в качестве полиморфного интерфейса для двоичного ввода-вывода с произвольным доступом в C++, но во многих отношениях он кажется неоптимальным:
64-битные поиски не переносимы и подвержены ошибкам из-за...
683 просмотров
schedule
07.06.2022
Бывает ли ситуация, когда производный класс должен скрываться…?
Возможно, глупый вопрос, но если предположить, что base class A определяет virtual method V , есть ли когда-нибудь ситуация, когда derived class C имеет смысл скрыть A.V , объявив новый virtual method C.V с той же подписью, что и A.V :...
276 просмотров
schedule
26.04.2023
Есть ли причина скрывать унаследованные члены в интерфейсе?
Я понимаю, что класс, унаследованный от другого класса, может скрыть свойство с помощью ключевого слова new . Однако это скрывает конкретную реализацию свойства, поэтому я могу понять, как ее можно использовать.
Есть ли практическая причина...
3152 просмотров
schedule
13.05.2023