難易度: 中級
次の Java プログラムの出力を予測します。
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
説明: のデフォルトのコンストラクターを呼び出す前に「3 番目」のオブジェクトが作成されるとき 三番目 class スーパークラスのデフォルトコンストラクター、つまり 2番 クラスが呼び出され、スーパークラスのデフォルトコンストラクターの前に再度呼び出されます。 初め クラスが呼び出されます。したがって、出力は a b c の順序になります。
プログラム 2: 変数の初期化とコンストラクターの実行
Javaclass 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
説明: 「Second」クラスには独自の「i」がないため、変数はスーパークラスから継承されます。また、親のコンストラクターは、オブジェクトを作成するときに呼び出されます。 2番。
プログラム 3: イテレータを使用した instanceof
Javaimport 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
説明: の イテレータ() このメソッドは、リスト内の要素に対する反復子を適切な順序で返します。List オブジェクトや ListIterator オブジェクトは返しません。あ リスト反復子 listIterator メソッドを呼び出すことで取得できます。
設定メニューを開く
プログラム 4: スレッドの開始および停止の例外
Javaclass 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 。