Ayer fue la primera vez que vi la herencia en Python. Y me volví a hacer algo parecido con gambas.
En Python era un ejemplo con un coche y un coche eléctrico.En ese caso el coche eléctrico heredaba
la clase coche, con alguna propiedad distinta y cambiando alguno de los métodos de la clase padre o principal.
Supongamos una clase A, que hereda de la principal o padre, unas propiedades pero se le añaden mas propiedades al iniciarla.
He hecho este ejemplo sencillo.
Lo que pretendía era, que siendo clases que heredan de una misma clase principal, clase 2 tiene una propiedad mas
que la clase 1. Que es la forma.
Clase Principal
Clase 1
Inherits ClasePrincipal
Static cuenta_clase As Integer
Public Sub _new()
'cuenta_clase += 1 'Aqui solo se hace una vez. No podemos aumentar el contador aqui
End
Public Function Decir() As String
cuenta_clase += 1
Return "Soy el objeto " & cuenta_clase & "º" & " de la clase 1. Mi color es " & Me.color
End
Static cuenta_clase As Integer
Public Sub _new()
'cuenta_clase += 1 'Aqui solo se hace una vez. No podemos aumentar el contador aqui
End
Public Function Decir() As String
cuenta_clase += 1
Return "Soy el objeto " & cuenta_clase & "º" & " de la clase 1. Mi color es " & Me.color
End
Clase2
Inherits ClasePrincipal
Static cuenta_clase As Integer
Private hforma As String
Property Read forma As String
Public Sub _new(sforma As String)
hforma = sforma
End
Private Function forma_Read() As String
Return hforma
End
Public Function Decir() As String
cuenta_clase += 1
Return "Soy el objeto " & cuenta_clase & "º" & " de la clase 2. Mi color es " & Me.color & " y mi forma es " & Me.forma
End
Static cuenta_clase As Integer
Private hforma As String
Property Read forma As String
Public Sub _new(sforma As String)
hforma = sforma
End
Private Function forma_Read() As String
Return hforma
End
Public Function Decir() As String
cuenta_clase += 1
Return "Soy el objeto " & cuenta_clase & "º" & " de la clase 2. Mi color es " & Me.color & " y mi forma es " & Me.forma
End
Y el modulo de inicio.
Public Sub Main()
Dim objeto1, objeto3 As Clase1
Dim objeto2, objeto4 As Clase2
objeto1 = New Clase1("rojo")
objeto2 = New Clase2("azul", "redonda")
objeto3 = New Clase1("verde")
objeto4 = New Clase2("gris", "cuadrada")
Print objeto1.Decir()
Print objeto2.Decir()
Print objeto3.Decir()
Print objeto4.Decir()
End
Dim objeto1, objeto3 As Clase1
Dim objeto2, objeto4 As Clase2
objeto1 = New Clase1("rojo")
objeto2 = New Clase2("azul", "redonda")
objeto3 = New Clase1("verde")
objeto4 = New Clase2("gris", "cuadrada")
Print objeto1.Decir()
Print objeto2.Decir()
Print objeto3.Decir()
Print objeto4.Decir()
End
Por otro lado observareis que no he creado la variable cuenta_clase en la clase principal. Si no en la clase 1 y en la clase 2.
Veréis que el contador funciona perfectamente según creamos un objeto de una clase u otra.
Puede que no este del todo correcto, ya que por practicar una cosa, se olvidan cosas del otro lenguaje.
Sigo sin usar super por ahora.
Os subo el código, para que no tengáis que escribir y veréis el resultado. Uso la de desarrollo.
Saludos
Clases_add_propiedades_nuevas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Clases_add_propiedades_nuevas.tar.gz | |
Tamaño: | 6.1 KB | |
Descargado: | 62 veces |
Clases_add_propiedades_nuevas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Clases_add_propiedades_nuevas.tar.gz | |
Tamaño: | 6.1 KB | |
Descargado: | 62 veces |
Clases_add_propiedades_nuevas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Clases_add_propiedades_nuevas.tar.gz | |
Tamaño: | 6.1 KB | |
Descargado: | 62 veces |