Salida del programa Java | Serie 23 (Herencia)

Requisito previo: Herencia en Java 

1) ¿Cuál es la salida del siguiente programa? 

Java

public class A extends B
{
    public static String sing()
    {
        return "fa";
    }
    public static void main(String[] args)
    {
        A a = new A();
        B b = new A();
    System.out.println(a.sing() + " " + b.sing());
    }
}
class B
{
    public static String sing()
    {
        return "la";
    }
}

Producción: 

fa la 

Explicación: 

El método sing() no se anulará porque los métodos estáticos no lo admiten , por lo que cuando b.sing() se ejecuta, solo se ejecuta el método sing() presente en la Clase B porque b es un objeto de tipo B; Bb = nueva A(). si desea » fa fa » como salida, simplemente elimine la estática en el método. Consulte este polimorfismo en tiempo de ejecución

2) ¿Cuál es la salida del siguiente programa?  

Java

class Building
{
    Building()
    {
        System.out.println("Geek-Building");
    }
    Building(String name)
    {
        this();
        System.out.println("Geek-building: String Constructor" + name);
    }
}
public class House extends Building
{
    House()
    {
        System.out.println("Geek-House ");
    }
    House(String name)
    {
        this();
        System.out.println("Geek-house: String Constructor" + name);
    }
    public static void main(String[] args)
    {
        new House("Geek");
    }
}

Producción: 

Geek-Building
Geek-House 
Geek-house: String ConstructorGeek

Explicación: 

Los constructores llaman a sus constructores predeterminados de superclase, que se ejecutan primero, y los constructores pueden sobrecargarse. Se llama al constructor First House con un argumento y el flujo cambia al constructor sin argumentos de la clase house debido a this(). Desde aquí, debido al constructor predeterminado de la superclase, se llama al constructor de edificio sin argumentos. De ahí el orden mostrado. Para más detalles Ver – Constructores en Java

3) ¿Cuál es la salida del siguiente programa?  

Java

class Base
{
    final public void show()
    {
        System.out.println("Base::show() called");
    }
}
class Derived extends Base
{
    public void show()
    {
        System.out.println("Derived::show() called");
    }
}
class Main
{
    public static void main(String[] args)
    {
        Base b = new Derived();
        b.show();
    }
}

Producción: 

Compiler Error 

Explicación: 

Los métodos finales no se pueden anular. Para obtener detalles, consulte la palabra clave final . Sin embargo, si eliminamos la palabra clave final, el resultado será 

Derived::show() called

4) ¿Cuál es la salida del siguiente programa? 

Java

public class EH
{
    public static void main(String args[])
    {
        int divisor =0;
        int dividend = 11;
     
        try
        {
            int result=dividend/divisor;
            System.out.println("The result is "+result);
        }
        catch(Exception e)
        {
            System.out.println("An exception occurred");
        }
        catch(ArithmeticException ae)
        {
            System.out.println("Division by zero");
        }
        finally
        {
            System.out.println("We are done!");
        }
    }
}

Producción: 

Compiler error 

Explicación: 

Se muestra la excepción ArithmeticException que ya se ha detectado. El orden terminal de los bloques catch es importante. La subclase más específica (ArithmeticException) debe aparecer antes y la superclase más general (excepción) debe escribirse más tarde. El programa se ejecutará correctamente si se intercambia el orden de la excepción aritmética y la excepción general.

5) ¿Cuál es la salida del siguiente programa?  

Java

abstract class Vibrate
{
    static String s = "-";
    Vibrate()
    {
        s += "v";
    }
}
public class Echo extends Vibrate
{
    Echo() 
    {
        this(7);
        s += "e";
    }
    Echo(int x)
    {
        s += "e2";
    }
    public static void main(String[] args)
    {
        System.out.print("made " + s + " ");
    }
    static
    {
        Echo e = new Echo();
        System.out.print("block " + s + " ");
    }
}

Producción: 

block -ve2e made -ve2e 

Explicación: 

El bloque de inicialización estático es el único lugar donde se crea una instancia de Echo. Luego se crea la instancia de Echo, el constructor sin argumentos de Echos llama a su constructor de 1 argumento, que luego llama al constructor de Vibrates (que luego llama en secreto al constructor de Objetos). En ese punto, los diversos constructores se ejecutan, comenzando con el constructor de Objetos y trabajando de regreso al constructor sin argumentos de Echos. ver palabra clave estática

Cuestionario sobre herencia  

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 *