Dane wyjściowe programu Java | Zestaw 6
Poziom trudności: Średnio zaawansowany
Przewiduj wyjście następujących programów Java.
Program 1: Łączenie konstruktorów
Java class First { public First () { System . out . println ( 'a' ); } } class Second extends First { public Second () { System . out . println ( 'b' ); } } class Third extends Second { public Third () { System . out . println ( 'c' ); } } public class MainClass { public static void main ( String [] args ) { Third c = new Third (); } }
Wyjście
a b c
Wyjaśnienie: Kiedy tworzony jest obiekt „Trzeci” przed wywołaniem domyślnego konstruktora Trzeci class domyślny konstruktor superklasy, tj. Drugi class, a następnie ponownie przed domyślnym konstruktorem domyślnego konstruktora superklasy Pierwszy klasa się nazywa. Zatem wynik jest w kolejności a b c.
Program 2: Inicjowanie zmiennych i wykonanie konstruktora
Java class First { int i = 10 ; public First ( int j ) { System . out . println ( i ); this . i = j * 10 ; } } class Second extends First { public Second ( int j ) { super ( j ); System . out . println ( i ); this . i = j * 20 ; } } public class MainClass { public static void main ( String [] args ) { Second n = new Second ( 20 ); System . out . println ( n . i ); } }
Wyjście
10 200 400
Wyjaśnienie: Ponieważ w klasie „Druga” nie ma ona własnego „i”, zmienna jest dziedziczona z superklasy. Konstruktor rodzica jest również wywoływany, gdy tworzymy obiekt Drugi.
Program 3: instancja z iteratorami
Java import java.util.* ; class Geeks { public static void main ( String [] args ) { Object i = new ArrayList (). iterator (); System . out . print (( i instanceof List ) + ' ' ); System . out . print (( i instanceof Iterator ) + ' ' ); System . out . print ( i instanceof ListIterator ); } }
Wyjście
false true false
Wyjaśnienie: The iterator() metoda zwraca iterator po elementach listy w odpowiedniej kolejności, nie zwraca obiektu List ani ListIterator. A ListIterator można uzyskać wywołując metodę listIterator.
Program 4: Wyjątek uruchomienia i zatrzymania wątku
Java class ThreadEx extends Thread { public void run () { System . out . print ( 'Hello...' ); } public static void main ( String args [] ) { ThreadEx T1 = new ThreadEx (); T1 . start (); T1 . stop (); T1 . start (); } }
Wyjście:
Run Time Exception
Wyjaśnienie: Wątek nie może zostać rozpoczęty więcej niż raz. Powołanie start() metoda w zatrzymanym wątku powoduje Wyjątek IllegalThreadStateException .