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