On Windows XP, FAT32, Eclipse it gives compilation time error:
Class file collision: A resource exists with a different case: /server/bin/misc/java_forums/C.class.

On FreeBSD 6.3-STABLE example compiles and runs well.

Java Code:

> java a
c
bc

I think it is potentially dangerous to give identical case insensitive names to few classes in the same package. Java is somehow system-dependent here, since it puts classes to files and it may come to hell as soon as not all filesystems are case-sensitive.

static - It's not allowed in class definitions. Use to define class variables, so maintain one copy of variables in classes. Also use to define class methods, and can only operate on class variables.

abstract - Use in class definition, to specify that a class cannot be instantiated. Abstract class can contain both abstract and non-abstract methods. But abstract methods cannot included in non-abstract class.

final - Used to define the constant level. Commonly final class cannot sub classed, final methods cannot be overridden, final variable cannot change.

Hope it's clear. But it's better to read some materials regarding this. Seems you are mess with access controls.

here in this case alone, java is not platform independent,,, bcoz it works in unix platforms

No, not "in this case alone". There are plenty of other things that can happen, or that you can program into your code, to make your code non-portable. As I have already told you (Runtime.exec being the largest one).

Also, the code can work on case insensitive file systems, as well. Simply compile it on a case sensitive file system, and pack the resulting classes into a jarfile. They can then be used on a case insensitive file system as they are contained within the jarfile and no longer contigent on the file systems case sensitivity. As I have also already told you.