Preguntas etiquetadas con abstract-class

Una clase abstracta es una clase que no puede ser instanciada. Generalmente están destinados a ser extendidos / subclases y generalmente tienen "métodos abstractos" que deben ser implementados por subclases.






3
Nunca haga que los miembros públicos sean virtuales / abstractos, ¿en serio?
En la década de 2000, un colega mío me dijo que es un antipatrón hacer que los métodos públicos sean virtuales o abstractos. Por ejemplo, consideró que una clase como esta no está bien diseñada: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) …

5
¿Las enumeraciones crean interfaces frágiles?
Considere el siguiente ejemplo. Cualquier cambio en la enumeración ColorChoice afecta a todas las subclases IWindowColor. ¿Las enumeraciones tienden a causar interfaces frágiles? ¿Hay algo mejor que una enumeración para permitir una mayor flexibilidad polimórfica? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor { public: …

2
Excepción abstracta tipo super
Si lanzar System.Exceptionse considera tan malo, ¿por qué no se Exceptionhizo abstracten primer lugar? De esa manera, no sería posible llamar: throw new Exception("Error occurred."); Esto exigiría el uso de excepciones derivadas para proporcionar más detalles sobre el error que ocurrió. Por ejemplo, cuando quiero proporcionar una jerarquía de excepción …







7
¿Cuáles son los roles de los singletons, las clases abstractas y las interfaces?
Estoy estudiando OOP en C ++ y, aunque conozco las definiciones de estos 3 conceptos, realmente no puedo darme cuenta de cuándo o cómo usarlo. Usemos esta clase para el ejemplo: class Person{ private: string name; int age; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void set_name (string parameter){this->name=parameter;} void …

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.