Vaikeustaso: Keskitaso
Ennusta seuraavien Java-ohjelmien tulos.
merkkijono lisäys
Ohjelma 1: Rakentajan ketjutus
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(); } }
Lähtö
a b c
Selitys: Kun 'Kolmas'-objekti luodaan ennen kuin kutsutaan oletusmuodostajaa Kolmas class superluokan oletuskonstruktori eli Toinen luokkaa kutsutaan ja sitten ennen superluokan oletuskonstruktorin oletuskonstruktoria Ensimmäinen luokkaa kutsutaan. Ja tästä syystä tulos on järjestyksessä a b c.
Ohjelma 2: Muuttujan alustus ja konstruktorin suoritus
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); } }
Lähtö
10 200 400
Selitys: Koska 'toisessa' luokassa sillä ei ole omaa 'i':tä, muuttuja peritään superluokasta. Myös vanhempien konstruktoria kutsutaan, kun luomme objektin Toinen.
Ohjelma 3: instanceof with Iterators
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); } }
Lähtö
false true false
Selitys: The iteraattori() menetelmä palauttaa iteraattorin luettelon elementtien päälle oikeassa järjestyksessä, se ei palauta List- tai ListIterator-objektia. A ListIterator voidaan saada käynnistämällä listIterator-menetelmä.
lajiteltu tuple python
Ohjelma 4: ketjun aloitus- ja lopetuspoikkeus
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(); } }
Lähtö:
Run Time Exception
Selitys: Ketjua ei voi aloittaa useammin kuin kerran. Soittaminen aloita () menetelmä pysäytetyssä säikeessä aiheuttaa IllegalThreadStateException .