using System;
class Clases
{
public static void Main(string[] args)
{
int numeroMesas = 5;
int numeroMesitas = 5;
int totalMesas = numeroMesas + numeroMesitas;
Random generador = new Random();
Mesa[] listaMesas = new Mesa[totalMesas];
for (int i = 0; i < numeroMesas; i++)
listaMesas[i] = new Mesa(generador.Next(50, 201),
generador.Next(50, 201));
for (int i = numeroMesas; i < totalMesas; i++)
listaMesas[i] = new Mesita(generador.Next(40, 51),
generador.Next(40, 51));
for (int i = 0; i < totalMesas; i++)
listaMesas[i].MostrarDatos();
}
}
// -----------------------------------------------------------------
class Mesa
{
protected int ancho, alto;
public Mesa(int an, int al)
{
ancho = an;
alto = al;
}
public virtual void MostrarDatos()
{
Console.WriteLine("Alto: {0}", alto);
Console.WriteLine("Ancho: {0}", ancho);
Console.WriteLine();
}
}
// -----------------------------------------------------------------
class Mesita : Mesa
{
public Mesita(int an, int al) : base (an, al)
{
}
public override void MostrarDatos()
{
base.MostrarDatos();
Console.WriteLine("(Mesita)");
Console.WriteLine();
}
}
En Java, los cambios (que no hayamos visto antes) son:
- Para indicar la herencia se usa "extends", en lugar de ":"
- Para apoyarnos en métodos (o constructores) de la clase base, en vez de "base", se usa "super" (pero si queremos basarnos en otros constructores de la misma clase, se usaría "this", igual que en C#).
- No hace falta indicar que una función es virtual: eso es lo que se asume, a no ser que se indique lo contrario (usando la palabra "final").
- El "override" se escribe antes del método, precedido por una arroba.
- Al igual que en C#, no es recomendable (pero sí posible) incluir varias clases en un único fichero fuente. Pero en el caso de Java se generarán varios ficheros ".class", uno por cada clase, de los cuales sólo será realmente ejecutable el que contenga "main".
import java.io.*;
import java.util.Random;
class Clases
{
public static void main(String[] args)
{
int numeroMesas = 5;
int numeroMesitas = 5;
int totalMesas = numeroMesas + numeroMesitas;
Random generador = new Random();
Mesa[] listaMesas = new Mesa[totalMesas];
for (int i = 0; i < numeroMesas; i++)
listaMesas[i] = new Mesa(generador.nextInt(150)+50,
generador.nextInt(150)+50);
for (int i = numeroMesas; i < totalMesas; i++)
listaMesas[i] = new Mesita(generador.nextInt(40)+10,
generador.nextInt(40)+10);
for (int i = 0; i < totalMesas; i++)
listaMesas[i].MostrarDatos();
}
}
// -----------------------------------------------------------------
class Mesa
{
protected int ancho, alto;
public Mesa(int an, int al)
{
ancho = an;
alto = al;
}
// En Java no hace falta "virtual": se da por sentado
public void MostrarDatos()
{
System.out.println("Alto: "+ alto);
System.out.println("Ancho: "+ ancho);
System.out.println();
}
}
// -----------------------------------------------------------------
class Mesita extends Mesa
{
public Mesita(int an, int al)
{
super (an, al);
}
@Override
public void MostrarDatos()
{
super.MostrarDatos();
System.out.println("(Mesita)");
System.out.println();
}
}
No hay comentarios:
Publicar un comentario