Salida del programa Java | conjunto 19

Prediga la salida de los siguientes programas Java.

Programa 1:

public class RuntimePolymorphism
{
    public static void main(String[] args)
    {
        A a = new B();
        B b = new B();
          
        System.out.println(a.c + " " + a.getValue() 
            + " " + b.getValue() + " " + b.getSuperValue());
    }
}
  
class A
{
    protected char c = 'A';
    char getValue()
    {
        return c;
    }
}
  
class B extends A
{
    protected char c = 'B';
    char getValue()
    {
        return c;
    }
    char getSuperValue()
    {
        return super.c;
    }
}

Salida: ABBA
Explicación: No hay magia de polimorfismo aquí; la variable de instancia c de A simplemente está oculta en B
– ac es ‘A’ porque está configurada en la clase A
– a.getValue() devuelve ‘B’ porque el objeto es de tipo B

Programa 2:

public class RuntimePolymorphism
{
    public static void main(String[] args)
    {
        A a = new B();
        B b = new B();
        System.out.println(a.c + " " + a.getValue() + 
            " " + b.getValue() + " " + b.getSuperValue());
    }
}
  
class A
{
    protected char c = 'A';
    char getValue()
    {
        return c;
    }
}
class B extends A
{
    protected char c = 'B';
    char getSuperValue()
    {
        return super.c;
    }
}

Salida: AAAA
Explicación: El concepto de polimorfismo para métodos no se puede usar aquí, ya que en la clase B no hay ninguna función que sobrecargue un método en la clase A. Consulte el polimorfismo en tiempo de ejecución para obtener más detalles.

Programa 3:

class test
{
    public static int y = 0;
}
  
class HasStatic
{
    private static int x = 100;
      
    public static void main(String[] args)
    {
        HasStatic hs1 = new HasStatic();
        hs1.x++;
          
        HasStatic hs2 = new HasStatic();
        hs2.x++;
          
        hs1 = new HasStatic();
        hs1.x++;
          
        HasStatic.x++;
        System.out.println("Adding to 100, x = " + x);
          
        test t1 = new test();
        t1.y++;
          
        test t2 = new test();
        t2.y++;
          
        t1 = new test();
        t1.y++;
          
        System.out.print("Adding to 0, ");
        System.out.println("y = " + t1.y + " " + t2.y + " " + test.y);
    }
}

Producción:

Adding to 100, x = 104
Adding to 0, y = 3 3 3

Explicación: En este ejemplo se muestran las propiedades de static. Cuando una variable se declara como estática, se crea una sola copia de la variable y se comparte entre todos los objetos a nivel de clase. Las variables estáticas son, esencialmente, variables globales. Todas las instancias de la clase comparten la misma variable estática. Ver más en: palabra clave estática

Programa 4:

public class Except 
{
    public static void main(String[] args) 
    {    
        try 
        {
            throw new Error();
        }
        catch (Error e) 
        {
            try 
            {
                throw new RuntimeException();
            }
            catch (Throwable t) 
            {
  
            }
        }
            System.out.println("phew");
    }
}

Salida: uf
Explicación: es legal lanzar y manejar errores y excepciones de tiempo de ejecución. RuntimeException es una sub-subclase de Throwable. Ver excepciones para más detalles

Programa 5:

public class Boot 
{
    static String s;
    static
    {
        s = "";
    }
    {
        System.out.println("GeeksforGeeks ");
    }
    static
    {
        System.out.println(s.concat("practice.GeeksforGeeks "));
    } 
    Boot() 
    { 
        System.out.println(s.concat("Quiz.GeeksforGeeks"));
    }
    public static void main(String[] args) 
    {
        new Boot();
        System.out.println("Videos.GeeksforGeeks");
    }
}

Producción:

practice.GeeksforGeeks 
GeeksforGeeks 
Quiz.GeeksforGeeks
Videos.GeeksforGeeks

Explicación: los bloques de inicio estáticos se ejecutan antes que los bloques de inicio de instancia (en el orden en que aparecen, respectivamente). El orden de los constructores de inicialización y el bloque inicializador no importa, el bloque inicializador siempre se ejecuta antes que el constructor. Ver bloque estático para más detalles

Este artículo es una contribución de Pavan Gopal Rayapati . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *