posted 18 years ago
Some modifiers can be or cannot be applied to class declarations depending on the circumstances.
For example, Top Level classes cannot be private or protected, however nested inner classes, as they are class member can ben declared protected or private.
Now, a method cannot be abstract and static at the same time in any context. There is a logical reason: when a method is declared abstract it is because it has to be implemented through inheratance. However static methods are not inherited, so there would be no way to implement a static abstract method.
It is different with member classes, because they do not behave as methods. And I guess that if the nested class has an abstract method therefore the class has to be declared abstract whether it is static or not, just as any other class.
It is different in this case, because the abstract static class still can be inherited and its abstract methods implemented.