Вихід програми Java | Набір 6
Рівень складності: середній
Передбачте вихід наступних програм Java.
Програма 1: З’єднання конструкторів
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 (); } }
Вихід
a b c
Пояснення: Коли об'єкт "Третій" створюється перед викликом конструктора за замовчуванням По-третє class типовий конструктор суперкласу, тобто друге викликається клас, а потім знову перед конструктором за замовчуванням суперкласу конструктор за замовчуванням перше клас називається. І, отже, результат буде в порядку a b c.
Програма 2: Ініціалізація змінної та виконання конструктора
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 ); } }
Вихід
10 200 400
Пояснення: Оскільки в «другому» класі він не має власного «i», змінна успадковується від суперкласу. Також конструктор батьківського елемента викликається, коли ми створюємо об’єкт друге.
Програма 3: instanceof з ітераторами
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 ); } }
Вихід
false true false
Пояснення: The ітератор() метод повертає ітератор над елементами списку в належній послідовності, він не повертає об’єкт List або ListIterator. А ListIterator можна отримати, викликавши метод listIterator.
Програма 4: Виняток для початку та зупинки потоку
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 (); } }
Вихід:
Run Time Exception
Пояснення: Потік не може бути запущений більше одного разу. Дзвінок початок() метод для зупиненого потоку викликає IllegalThreadStateException .