Java Programming - Objects and Collections - Discussion

3. 

What will be the output of the program?

package foo; 
import java.util.Vector; /* Line 2 */
private class MyVector extends Vector 
{
    int i = 1; /* Line 5 */
    public MyVector() 
    { 
        i = 2; 
    } 
} 
public class MyNewVector extends MyVector 
{
    public MyNewVector () 
    { 
        i = 4; /* Line 15 */
    } 
    public static void main (String args []) 
    { 
        MyVector v = new MyNewVector(); /* Line 19 */
    } 
}

[A]. Compilation will succeed.
[B]. Compilation will fail at line 3.
[C]. Compilation will fail at line 5.
[D]. Compilation will fail at line 15.

Answer: Option B

Explanation:

Option B is correct. The compiler complains with the error "modifier private not allowed here". The class is created private and is being used by another class on line 19.


Avinash 01 said: (Aug 20, 2012)  
First error :chance of getting error in line number 15
because int is not declared

Arnold01 said: (Aug 10, 2014)  
Oh, I thought the reason is that top level classes within a package should only be public or package-private (no modifier)... and PRIVATE is only for member classes which makes the class invisible to the package level... which the compiler thinks will be a useless (unreachable) class for other classes.

Pratyush said: (Feb 9, 2021)  
If modifier will not private it's public.

Then the program will compile or not? Please explain.

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.