Articles of herencia

Herencia de diamantes (C ++)

Sé que tener herencia de diamantes se considera una mala práctica. Sin embargo, tengo 2 casos en los que siento que la herencia de diamantes podría encajar muy bien. Quiero preguntar, ¿me recomendaría usar herencia de diamantes en estos casos, o hay otro diseño que podría ser mejor? Caso 1: Quiero crear clases que representen […]

¿Por qué se heredan los métodos estáticos de clase pero no los métodos estáticos de interfaz?

Entiendo que en Java los métodos estáticos se heredan al igual que los métodos de instancia, con la diferencia de que cuando se vuelven a declarar, las implementaciones principales se ocultan en lugar de anularse. Bien, esto tiene sentido. Sin embargo, el tutorial de Java señala que Los métodos estáticos en las interfaces nunca se […]

Herencia o composición: ¿Confía en “is-a” y “has-a”?

Cuando diseño clases y tengo que elegir entre herencia y composición, normalmente uso la regla de oro: si la relación es “es-a”, uso la herencia, y si la relación es “tiene-a”, use la composición. ¿Siempre es correcto? Gracias.

¿Cómo pueden las interfaces reemplazar la necesidad de herencia múltiple cuando tienen clases existentes?

Antes que nada … Lo siento por esta publicación. Sé que hay muchas publicaciones en stackoverflow que están discutiendo herencia múltiple. Pero ya sé que Java no admite herencia múltiple y sé que el uso de interfaces debería ser una alternativa. Pero no lo entiendo y veo mi dilema: Tengo que hacer cambios en una […]

¿Por qué los constructores no pueden ser heredados en Java?

Soy un principiante en el lenguaje de progtwigción java, recientemente he estudiado que los constructores no pueden ser heredados en java. ¿Puede alguien explicar por qué ? Ya leí este enlace de C ++

Herencia de Java: llamar al método de la superclase

Supongamos que tengo las siguientes dos clases public class alpha { public alpha(){ //some logic } public void alphaMethod1(){ //some logic } } public class beta extends alpha { public beta(){ //some logic } public void alphaMethod1(){ //some logic } } public class Test extends beta { public static void main(String[] args) { beta obj […]

Sobrecarga de herencia y método

¿Por qué el comstackdor C ++ da este error? Por qué puedo acceder a lol () desde B, pero no puedo acceder a rofl () [sin parámetros]. ¿Dónde está la captura? class A { public: void lol(void) {} void rofl(void) { return rofl(0);} virtual void rofl(int x) {} }; class B : public A { […]

¿Por qué una clase padre e hijo implementarían la misma interfaz?

Heredé algún código heredado de Java (1.4) y esta decisión de diseño aparece regularmente. No puedo entender si hay algún propósito o razón para ello. public interface SoapFacade extends iConfigurable{ } public class SoapFacadeBase implements SoapFacade{ … } public class SoapFacadeImpl extends SoapFacadeBase implements SoapFacade{ … } Como entiendo las interfaces (y mi experimentación se […]

Herencia de C ++ – ¿base inaccesible?

Parece que no puedo usar una clase base como parámetro de función, ¿he estropeado mi herencia? Tengo lo siguiente en mi principal: int some_ftn(Foo *f) { /* some code */ }; Bar b; some_ftn(&b); Y la clase Bar hereda de Foo de tal manera: class Bar : Foo { public: Bar(); //snip private: //snip }; […]

¿Son heredados los campos estáticos?

Cuando los miembros estáticos se heredan, son estáticos para toda la jerarquía, o simplemente esa clase, es decir: class SomeClass { public: SomeClass(){total++;} static int total; }; class SomeDerivedClass: public SomeClass { public: SomeDerivedClass(){total++;} }; int main() { SomeClass A; SomeClass B; SomeDerivedClass C; return 0; } totalizaría 3 en las tres instancias, o serían […]