¿Por qué preferir la composición sobre la herencia? ¿Qué compensaciones hay para cada enfoque? ¿Cuándo debería elegir la herencia sobre la
La herencia es el sistema de programación orientada a objetos que permite a los objetos soportar operaciones definidas por tipos anteriores sin tener que proporcionar su propia definición. Es el vector principal para el polimorfismo en la programación orientada a objetos.
¿Por qué preferir la composición sobre la herencia? ¿Qué compensaciones hay para cada enfoque? ¿Cuándo debería elegir la herencia sobre la
Cuando planifico mis programas, a menudo empiezo con una cadena de pensamiento como esta: Un equipo de fútbol es solo una lista de jugadores de fútbol. Por lo tanto, debería representarlo con: var football_team = new List<FootballPlayer>(); El orden de esta lista representa el orden en...
¿Cuáles son las diferencias entre estos dos fragmentos de código? Utilizando type(): import types if type(a) is types.DictType: do_something() if type(b) in types.StringTypes: do_something_else() Utilizando isinstance(): if isinstance(a, dict): do_something() if isinstance(b, str) or...
¿Hay alguna razón para que una declaración de clase herede object? Acabo de encontrar un código que hace esto y no puedo encontrar una buena razón. class MyClass(object): # class code
La página Ámbito de referencia de API dice: Un ámbito puede heredar de un ámbito primario. La página Alcance de la Guía del desarrollador dice: Un ámbito (prototípicamente) hereda propiedades de su ámbito principal. Entonces, ¿un ámbito secundario siempre hereda prototípicamente de su...
¿Cuál es la diferencia entre public, privatey protectedherencia en C ++? Todas las preguntas que he encontrado en SO tratan casos
En " Programación de Python ", Mark Lutz menciona "mixins". Soy de un fondo C / C ++ / C # y no he escuchado el término antes. ¿Qué es un mixin? Leyendo entre las líneas de este ejemplo (al que me he vinculado porque es bastante largo), supongo que es un caso de usar herencia múltiple para...
Soy bastante nuevo en la programación orientada a objetos de Python y tengo problemas para entender el super() función (nuevas clases de estilo), especialmente cuando se trata de herencia múltiple. Por ejemplo, si tienes algo como: class First(object): def __init__(self): print "first" class...
¿Cómo configuro una clase que representa una interfaz? ¿Es esto solo una clase base
Esta figura muestra nuevamente que cada objeto tiene un prototipo. La función de constructor Foo también tiene su propia __proto__función, Function.prototype, y que a su vez también hace referencia a través de su __proto__propiedad al Object.prototype. Por lo tanto, repita, Foo.prototype es solo...
Estoy un poco confundido acerca de cómo los genéricos de Java manejan la herencia / polimorfismo. Asuma la siguiente jerarquía: Animal (padre) Perro - Gato (Niños) Supongamos que tengo un método doSomething(List<Animal> animals). Según todas las reglas de herencia y polimorfismo,...
Alguien lo mencionó en el IRC como el problema del
Por favor explique en un lenguaje fácil de entender o un enlace a algún
Al crear una jerarquía de objetos simple en Python, me gustaría poder invocar métodos de la clase primaria desde una clase derivada. En Perl y Java, hay una palabra clave para this ( super). En Perl, podría hacer esto: package Foo; sub frotz { return "Bamf"; } package Bar; @ISA = qw(Foo); sub...
¿Cómo llamo a la función padre desde una clase derivada usando C ++? Por ejemplo, tengo una clase llamada parent, y una clase llamada childque se deriva de padre. Dentro de cada clase hay una printfunción. En la definición de la función de impresión del niño, me gustaría llamar a la función de...
Cuál es la diferencia entre: class Child(SomeBaseClass): def __init__(self): super(Child, self).__init__() y: class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self) He visto que superse usa bastante en clases con una sola herencia. Puedo ver por qué lo usarías en...
Si clase By clase Cextienden clase Ay tengo un objeto de tipo Bo C, ¿cómo puedo determinar de qué tipo es una
¿Cuál es la diferencia? ¿Cuándo debo usar cuál? ¿Por qué hay tantos de
En una de mis entrevistas, me pidieron que explicara la diferencia entre una interfaz y una clase abstracta . Aquí está mi respuesta: Los métodos de una interfaz Java son implícitamente abstractos y no pueden tener implementaciones. Una clase abstracta de Java puede tener métodos de instancia...
Esta puede ser una pregunta genérica de OOP. Quería hacer una comparación genérica entre una interfaz y una clase abstracta en función de su uso. ¿Cuándo querría usar una interfaz y cuándo querría usar una clase abstracta