I have read the posts on differences between static nested classes and inner classes. My question is more of an idiomatic java one.
My requirement was to demonstrate various concepts like inheritance using a Single piece of code in Java. A single class file, so that it can be studied top-down and verified by running in sandbox like ideone - http://ideone.com/jsHePB
class SOFieldAccessQuestion {
static class B {
int vf;
static int sf;
B(int i) {
vf = i;
sf = i + 1;
}
}
static class C extends B {
int vf;
static int sf;
C(int i) {
super(i+20);
vf = i;
sf = i + 2;
}
}
public static void main(String[] args) {
// Is it Okay to create an instance of static nested class?
C c1 = new C(100);
B b1 = c1;
System.out.println("B.sf = " + B.sf + ", b1.sf = " + b1.sf);
System.out.println("C.sf = " + C.sf + ", c1.sf = " + c1.sf);
System.out.println("b1.vf = " + b1.vf);
System.out.println("c1.vf = " + c1.vf);
}
}
My question is, is it okay to create an instance of a static nested class like above? I fear that I am ignoring the meaning of "static" here. How should I refer and acknowledge the concept that Java allows me to create objects of static class.
If I don't create a static class of B or C, then I can't use them inside public static void main method and may not execute the program with a main entry point and thus I am forced to do it.