📜  Java程序的输出|设置 6

📅  最后修改于: 2022-05-13 01:55:43.239000             🧑  作者: Mango

Java程序的输出|设置 6

难度级别:中级

预测以下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


解释:
在创建'Third'类型的新对象时,在调用Third类的默认构造函数之前,调用超类的默认构造函数,即Second class,然后再次在超类的默认构造函数之前,调用First类的默认构造函数.因此给出了这样的输出。

方案二:

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”,因此该变量是从超类继承的。此外,当我们创建 Second 对象时,会调用 parent 的构造函数。

方案 3:

import java.util.*; 
class I 
{
    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

解释:
iterator() 方法以正确的顺序返回列表中元素的迭代器,它不返回 List 或 ListIterator 对象。 ListIterator 可以通过调用 listIterator 方法获得。

程序 4:

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


解释:
Java .lang.Thread.start 处的线程“主” Java .lang.IllegalThreadStateException 中的异常
线程不能启动两次。