Salida del programa Java | Serie 20 (Herencia)

Requisito previo: herencia en Java

Prediga la salida de los siguientes programas Java.
Programa 1:

class A
{
    public A(String s) 
    {
        System.out.print("A");
    }
}
  
public class B extends A 
{
    public B(String s) 
    {
        System.out.print("B");
    }
    public static void main(String[] args) 
    {
        new B("C");
        System.out.println(" ");
    }
}

Salida: la compilación falla

prog.java:12: error: constructor A in class A cannot be applied to given types;
    {
    ^
  required: String
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error

Explicación: la llamada super() implícita en el constructor de B no se puede satisfacer porque no hay un constructor sin argumentos en A. El compilador genera un constructor predeterminado sin argumentos solo si la clase no tiene un constructor definido explícitamente. detalle Ver – Constructores en Java

Programa 2:

class Clidder 
{
    private final void flipper() 
    {
        System.out.println("Clidder");
    }
}
  
public class Clidlet extends Clidder 
{
    public final void flipper() 
    {
        System.out.println("Clidlet");
    }
    public static void main(String[] args) 
    {
        new Clidlet().flipper();
    }
}

Producción:

Clidlet

Explicación: aunque un método final no se puede invalidar, en este caso, el método es privado y, por lo tanto, está oculto. El efecto es que se crea un flipper de método nuevo y accesible. Por lo tanto, no ocurre ningún polimorfismo en este ejemplo, el método invocado es simplemente el de la clase secundaria y no ocurre ningún error.

Programa 3:

class Alpha 
{
    static String s = " ";
    protected Alpha() 
    {
        s += "alpha ";
    }
}
class SubAlpha extends Alpha 
{
    private SubAlpha() 
    {
        s += "sub ";
    }
}
  
public class SubSubAlpha extends Alpha 
{
    private SubSubAlpha() 
    {
        s += "subsub ";
    }
    public static void main(String[] args) 
    {
        new SubSubAlpha();
        System.out.println(s);
    }
}

Producción:

alpha subsub

Explicación: ¡SubSubAlpha extiende Alpha! Dado que el código no intenta hacer un SubAlpha, el constructor privado en SubAlpha está bien.

Programa 4:

public class Juggler extends Thread 
{
    public static void main(String[] args) 
    {
        try 
        {
            Thread t = new Thread(new Juggler());
            Thread t2 = new Thread(new Juggler());
        }
        catch (Exception e) 
        {
            System.out.print("e ");
        }
    }
    public void run() 
    {
        for (int i = 0; i < 2; i++) 
        {
            try 
            {
                Thread.sleep(500);
            }
            catch (Exception e) 
            {
                System.out.print("e2 ");
            }
            System.out.print(Thread.currentThread().getName()+ " ");
        }
    }
}

Salida: Sin salida
Explicación: En main(), nunca se llamó al método start() para iniciar ”t” y ”t2”, por lo que run() nunca se ejecutó.
Para obtener más información: consulte subprocesos múltiples en Java
 

Programa 5:

class Grandparent 
{
    public void Print() 
    {
        System.out.println("Grandparent's Print()"); 
    } 
}
  
class Parent extends Grandparent 
{
    public void Print() 
    {
        System.out.println("Parent's Print()"); 
    } 
}
  
class Child extends Parent 
{
    public void Print()   
    {
        super.super.Print();
        System.out.println("Child's Print()"); 
    } 
}
  
public class Main 
{
    public static void main(String[] args) 
    {
        Child c = new Child();
        c.Print(); 
    }
}

Salida: Error del compilador en super.super.Print()
Explicación: En Java, no está permitido hacer super.super. Solo podemos acceder a los miembros de Grandparent usando Parent. Ver Herencia en Java

Artículo relacionado: Cuestionario sobre herencia en Java

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 *