' gambas class file
Private $nombre As String
Private $apellido As String
Private $edad As Integer
Private $ci As Integer
Private $nacionalidad As String
Public Sub _new(nombre As String, apellido As String, edad As Integer, ci As Integer, nacionalidad As String)
$nombre = nombre
$edad = edad
$ci = ci
$nacionalidad = nacionalidad
$apellido = apellido
End
Property Nombre As String
Private Function Nombre_Read() As String
Return $nombre
End
Private Sub Nombre_Write(Value As String)
$nombre = Value
End
Property Edad As Integer
Private Function Edad_Read() As Integer
Return $edad
End
Private Sub Edad_Write(Value As Integer)
$edad = Value
End
Property Ci As Integer
Private Function Ci_Read() As Integer
Return $ci
End
Private Sub Ci_Write(Value As Integer)
$ci = Value
End
Property Nacionalidad As String
Private Function Nacionalidad_Read() As String
Return $nacionalidad
End
Private Sub Nacionalidad_Write(Value As String)
$nacionalidad = Value
End
Property Apellido As String
Private Function Apellido_Read() As String
Return $apellido
End
Private Sub Apellido_Write(Value As String)
$apellido = Value
End
Private $nombre As String
Private $apellido As String
Private $edad As Integer
Private $ci As Integer
Private $nacionalidad As String
Public Sub _new(nombre As String, apellido As String, edad As Integer, ci As Integer, nacionalidad As String)
$nombre = nombre
$edad = edad
$ci = ci
$nacionalidad = nacionalidad
$apellido = apellido
End
Property Nombre As String
Private Function Nombre_Read() As String
Return $nombre
End
Private Sub Nombre_Write(Value As String)
$nombre = Value
End
Property Edad As Integer
Private Function Edad_Read() As Integer
Return $edad
End
Private Sub Edad_Write(Value As Integer)
$edad = Value
End
Property Ci As Integer
Private Function Ci_Read() As Integer
Return $ci
End
Private Sub Ci_Write(Value As Integer)
$ci = Value
End
Property Nacionalidad As String
Private Function Nacionalidad_Read() As String
Return $nacionalidad
End
Private Sub Nacionalidad_Write(Value As String)
$nacionalidad = Value
End
Property Apellido As String
Private Function Apellido_Read() As String
Return $apellido
End
Private Sub Apellido_Write(Value As String)
$apellido = Value
End
Quiero que esta clase sea abstracta, y que no se puedan crear objetos con ella ya que voy a heredar los datos a una clase Estudiante, en Java existe la clase reservada Abstract pero acá creo que no jaja así que creo la siguiente clase:
' gambas class file
Inherits Persona
Private $codigo As Integer
Public Sub _new(codigo As Integer)
$codigo = codigo
End
Property Codigo As Integer
Private Function Codigo_Read() As Integer
Return $codigo
End
Private Sub Codigo_Write(Value As Integer)
$codigo = Value
End
Public Function ToString() As String
Return "Nombre: " & Me.Nombre & " Apellido: " & Me.Apellido & " Edad: " & Me.Edad & " CI: " & Me.Ci & " Nacionalidad: " & Me.Nacionalidad & " Código: " & Me.Codigo
End
Inherits Persona
Private $codigo As Integer
Public Sub _new(codigo As Integer)
$codigo = codigo
End
Property Codigo As Integer
Private Function Codigo_Read() As Integer
Return $codigo
End
Private Sub Codigo_Write(Value As Integer)
$codigo = Value
End
Public Function ToString() As String
Return "Nombre: " & Me.Nombre & " Apellido: " & Me.Apellido & " Edad: " & Me.Edad & " CI: " & Me.Ci & " Nacionalidad: " & Me.Nacionalidad & " Código: " & Me.Codigo
End
A lo que ahora viene mi duda, en el constructor en Java es necesario pasarle todos los datos que va a heredar de la clase padre que en este caso serian nombre,apellido,edad,ci y nacionalidad y inicializarlos con el super de la siguiente forma super(nombre,apellido,edad,ci y nacionalidad) lo cual el código quedaria de la siguiente forma si fuera Java:
Public Sub _new(nombre As String, apellido As String, edad As Integer, ci As Integer, nacionalidad As String, codigo As Integer)
Super(nombre, edad, ci, nacionalidad, apellido)
$codigo = codigo
End
Si lo hago de esta forma cuando voy a crear un objeto de la clase Estudiante me muestra repetidos todos los atributos a lo que saque la conclusión de que en Gambas3 el constructor no hay que pasarle nada y que el Inherits que le pase con el nombre de la clase padre se encarga de heredar todo y no tener que estar poniendo en el constructor atributo por atributo de la clase padre ni inicializarlos con el super como se hace en Java. A lo que yo me pregunto ahora, esta bien lo que estoy diciendo? o estoy cometiendo algún error? soy un poco nuevo en Gambas3 así que si alguien me puede ayudar con el tema se lo agradezco, muchas gracias por la ayuda, saludos a todos
P/D dejo la clase Main() que use para testear:
' gambas module file
Private alumno As Alumno
Public Sub Main()
Dim nombre As String = "Pepe"
Dim apellido As String = "Grillo"
Dim edad As Integer = 32
Dim ci As Integer = 4855776
Dim nacionalidad As String = "Chino"
Dim codigo As Integer = 1
alumno = New Alumno(nombre, apellido, edad, ci, nacionalidad, codigo)
Print alumno.ToString()
End
Private alumno As Alumno
Public Sub Main()
Dim nombre As String = "Pepe"
Dim apellido As String = "Grillo"
Dim edad As Integer = 32
Dim ci As Integer = 4855776
Dim nacionalidad As String = "Chino"
Dim codigo As Integer = 1
alumno = New Alumno(nombre, apellido, edad, ci, nacionalidad, codigo)
Print alumno.ToString()
End