Java Programming - Declarations and Access Control - Discussion

Discussion Forum : Declarations and Access Control - General Questions (Q.No. 2)
2.
public class Outer 
{ 
    public void someOuterMethod() 
    {
        //Line 5 
    } 
    public class Inner { } 
    
    public static void main(String[] argv) 
    {
        Outer ot = new Outer(); 
        //Line 10
    } 
} 

Which of the following code fragments inserted, will allow to compile?

new Inner(); //At line 5
new Inner(); //At line 10
new ot.Inner(); //At line 10
new Outer.Inner(); //At line 10
Answer: Option
Explanation:

Option A compiles without problem.

Option B gives error - non-static variable cannot be referenced from a static context.

Option C package ot does not exist.

Option D gives error - non-static variable cannot be referenced from a static context.

Discussion:
14 comments Page 1 of 2.

Arghyarupa Lenka said:   1 year ago
There can be only one public class in a Java file. Right?
(3)

NIKHIL Patil said:   3 years ago
@All.

If you think, we can add code in line 10 then this was the biggest mistake because method and class both are non-static so it gives always an error.
(1)

Ranjitha S said:   8 years ago
What is non-static variable cannot be referenced from a static context?

Prakash VL said:   8 years ago
new Inner();

// what I got understand is, object level instance variable can be accessed in the object level method.

In the same way; here they are creating the object of the inner class.

class Test
{
int x;
public void Change()
{
x=10;// This is possible.
Inner in=new Inner();// This is also possible.
}
public class Inner{}
}

Ruchira said:   9 years ago
Please explain this.

Cheenu said:   9 years ago
Can anybody please explain more clearly?

XYZ said:   9 years ago
The program doesn't compile! But, compiles if the inner class is static.

Bala said:   10 years ago
There is another error that only one public class is allowed per source code in java.

Mounika said:   10 years ago
Can anyone explain me clearly?

Bjoooooooo said:   1 decade ago
Instead of
new ot.Inner(); ot.new Inner();

And
Instead of
new Outer.Inner(); new Outer().new Inner();
At line 10.


Post your comments here:

Your comments will be displayed after verification.