Java tutorial. See google "java tutorials"
Learning the Java Language, Packages, Creating a Package (http://docs.oracle.com/javase/tutorial/java/package/createpkgs.html)
Note: If you put multiple types in a single source file, only one can be public, and it must have the same name as the source file. For example, you can define public class Circle in the file Circle.java, define public interface Draggable in the file Draggable.java, define public enum Day in the file Day.java, and so forth.
Примечание: Если вы помещаете несколько типов в один исходный файл, то только один из них может иметь модификатор public и он должен совпадать с именем исходного файла. Например, можно определить public класс Circle в файле Circle.java, определить интерфейс public interface Draggable в файле Draggable.java, определить множество public enum Day в файлеDay.java и т. д.
Т. е. в вашем случае - определить public class ClassDemo можно только в файле ClassDemo.java.