Supongamos lo siguiente: Tenemos una clase A, con atributos x e y, disponemos de los métodos #x:unValor, #y:otroValor, #x e #y. Es decir de los métodos para establecer y obtener los valores de los atributos. Ahora también hemos sobreescrito el new, de manera que no se pueda hacer referencia a él, algo como:
#new
Código:
^(self error: 'Debe usarse el constructor apropiado en esta clase').
Hemos creado el constructor de esta clase que sería algo como:
Código:
x:unValor y:otroValor
^(super new x:unValor; y:otroValor).
Ahora supongamos que creamos una clase hija B, con el atributo adicional z, y tambien creamos los métodos para obtener y establecer el valor del atributo z. Vamos a crear el constructor. Sobreescribimos el método #new, de la misma manera de antes y creamos el constructor. Quedaria de la siguiente manera:
Código:
x:unValor y:otroValor z:elUltimoValor
^((super x:unValor y:otroValor); z:elUltimoValor).
Mi duda es la siguiente: ¿Como esto puede funcionar?, es decir estamos utilizando un constructor de la clase padre, por lo tanto
Código:
super x:unValor y:otroValor
¿Tienen alguna idea de que podría ser lo que no estoy viendo?, ¿Obvie algo del POO?, ¿Hay algo que hice que no debí haber hecho?, ¿Sobreescribir el #new?
Muchas gracias por detenerse a leer.