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
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