close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Ticket #729: ticket_6.MethodsInheritance.tol

File ticket_6.MethodsInheritance.tol, 1.3 KB (added by pgea@…, 16 years ago)
Line 
1
2//////////////////////////////////////////////////////////////////////////////
3
4Class CPrincipal {
5  Real a;
6  Code b
7};
8
9//////////////////////////////////////////////////////////////////////////////
10// Si declaramos una clase secundaria donde concretamos el método b
11// encontramos el siguiente error:
12
13/*
14Class CSecundaria01 : CPrincipal {
15  Real b (Real x) { x }
16};
17*/
18// ERROR: Conflicto de herencia: No se puede reemplazar la declaración de miembro
19// Code CPrincipal::b
20//  por la declaración incompatible
21// Real ::b(Real x){x}
22
23//////////////////////////////////////////////////////////////////////////////
24// Este error puede evitarse redefiniendo el método como un atributo de tipo Code
25
26Class CSecundaria02 : CPrincipal {
27  Code b = Real (Real x) { x }
28};
29
30CSecundaria02 ej1 = [[Real a = 1]];
31
32//////////////////////////////////////////////////////////////////////////////
33// Sin embargo la clase no se reconoce como derivada de la principal:
34
35CSecundaria02 CSecundaria02.New(NameBlock args) {
36  CSecundaria02 new = args
37};
38
39CPrincipal ej3 = CSecundaria02.New([[Real a = 3]]);
40// ERROR: [17] No se pudo crear la instancia ej3 de la clase CPrincipal debido a que hay miembros no implementados :
41//  Code CPrincipal::b
42
43//////////////////////////////////////////////////////////////////////////////
44
45
46