Question: Does this program have type errors? Explain static and dynamic type (subtype and supertype) assignments for variables with references to the JLS, statement by statement
Does this program have type errors? Explain static and dynamic type (subtype and supertype) assignments for variables with references to the JLS, statement by statement for the lines of code labeled with comments that start with //statement. Which statements, if any, should you comment out to make this program compile and run without producing any errors? With commented out statement(s), what output does the program print? Why? Please explain.
1 2 3 4 5 6 7 8 9 10 11 package com.mg; interface MCall { default int f1() { return 2; } } public class Main implements MCall { static { fvar = 7; } static int fvar = 0; public int fvar1 = 2_0; public int f() { return fvar = 1; } interface Mall { default int f() { return 2; } } public class Nested extends Main implements Main.MCall { int fvar = 1; 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public int fo{ fvar = Main.this.fvar1; return fvar; } } public static void main(String[] args) { Main.MCall calli = new Main() .new Nested(); Main call2 = new Main().new Nested(); Main.Nested call3 = (Main. Nested) new Main(); com.mg.MCall call4 = new Main(); System.out.println(calli.f()); System.out.println(call2.f()); System.out.println(call3.f()); System.out.println(call4.f()); } 32 33 34 //statement 1 //statement 2 //statement 3 //statement 4 //statement 5 //statement 6 //statement 7 //statement 8 35 36 37 38 39 H1
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
