Which of the following, if inserted at the comment //Here will allow the code to compile and run without error class MyCast{} public class Base extends MyCast{ static boolean b1=false; static int i = 1; static double d = 10.1; public static void main(String argv[]){ MyCast m = new MyCast (); Base b = new Base(); //………..Here }}

  1. b=m;

  2. m=b;

  3. d =i;

  4. b1 =i;


Correct Option: B

AI Explanation

To answer this question, we need to understand the concept of inheritance and typecasting.

The given code defines two classes: MyCast and Base. The class Base extends the class MyCast, indicating that Base inherits from MyCast.

In the main method, two objects are instantiated: m of type MyCast and b of type Base. Now, let's go through each option to determine which one allows the code to compile and run without error when inserted at the comment //………..Here.

Option A) b = m; This option attempts to assign m to b. However, m is of type MyCast, and b is of type Base. Since Base inherits from MyCast, we can assign a Base object to a MyCast reference, but not the other way around. Therefore, this option is incorrect.

Option B) m = b; This option attempts to assign b to m. Since Base extends MyCast, a Base object can be treated as a MyCast object. Therefore, this option is correct.

Option C) d = i; This option attempts to assign the value of i to d. However, i is of type int, and d is of type double. The assignment may result in a loss of precision, which is not allowed without explicit casting. Therefore, this option is incorrect.

Option D) b1 = i; This option attempts to assign the value of i to b1. However, i is of type int, and b1 is of type boolean. The types are not compatible, and this assignment is not allowed. Therefore, this option is incorrect.

The correct answer is Option B) m = b;. This option allows the code to compile and run without error because a Base object can be assigned to a MyCast reference.

Find more quizzes: