?
Analyze the following code:
Analyze the following code:
public class Test implements Runnable{
public static void main(String[] args){
Test t = new Test();
t.start();
}
public void run() { }
}
public class Test implements Runnable{
public static void main(String[] args){
Test t = new Test();
t.start();
}
public void run() { }
}
Answer & Solution
Correct Answer:
Option
A
Code Analysis:
1. Implementing Runnable: The Test class implements the Runnable interface, which requires the implementation of the run() method.
2. Creating an Instance: In the main method, an instance of Test is created (Test t = new Test();).
3. Calling start() Method: The code then calls t.start();. However, start() is a method of the Thread class, not the Runnable interface.
4. Compilation Error: Since Test implements Runnable and not Thread, it does not inherit the start() method from Thread. Therefore, calling start() on an instance of Test causes a compilation error because the start() method is not defined in the Test class.
Therefore, the correct option is A: The program does not compile because the start() method is not defined in the Test class.
1. Implementing Runnable: The Test class implements the Runnable interface, which requires the implementation of the run() method.
2. Creating an Instance: In the main method, an instance of Test is created (Test t = new Test();).
3. Calling start() Method: The code then calls t.start();. However, start() is a method of the Thread class, not the Runnable interface.
4. Compilation Error: Since Test implements Runnable and not Thread, it does not inherit the start() method from Thread. Therefore, calling start() on an instance of Test causes a compilation error because the start() method is not defined in the Test class.
Therefore, the correct option is A: The program does not compile because the start() method is not defined in the Test class.
Join the Discussion
Login to post a comment or share your explanation.
Login{
public static void main(String[] args)
{
Thread t=new Thread(this);
t.start();
}
public void run()
{}
}
option D but the fact is that the output will be a garbage value
new Thread(t).start();
so (a) is correct