2015-05-13 61 views
-3

以下代碼將輸出程序A。請解釋一下w.r.t super.run();線程和超級關鍵字

class RunnableA implements Runnable{ 
    public void run(){ 
     System.out.println("Program A"); 
    } 
} 

class MyThread extends Thread{ 
    MyThread(Runnable r){ 
     //set as a target 
     super(r); 
    } 
    public void run(){ 
     //System.out.println("MyThread"); 
     super.run(); 
    } 
} 

class Demo{ 
    public static void main(String args[]){ 
     RunnableA a1=new RunnableA(); 
     //a1.start(); //Illegal 
     new MyThread(a1).start(); 
    } 
} 
+0

添加更多你正在尋找的東西的描述。你的問題很不清楚,將被關閉。 –

回答

0

super.run();意味着MyThreadrun()方法執行Threadrun()方法(它調用傳遞給構造函數的Runnable實例的run()方法)。

因此new MyThread(a1).start();執行RunnableArun()方法和打印"Program A"

在這個例子中,MyThread是無用的,因爲它沒有添加任何功能Thread。您可以用以下方法替換主要方法:

public static void main(String args[]) 
{ 
    RunnableA a1=new RunnableA(); 
    new Thread(a1).start(); 
} 

並獲得相同的行爲。

+0

謝謝。我們沒事。 –