Using a main method to test your class implementation (revisited) When we create a class X, we have been creating a separate class named UseX and added a main method in it. Alternatively, we can add a main inside X directly. It is not surprising. After all a main method is just a static method in a class just like any other static method. I have chosen to use a main in a separate class because that main in a separate class can only access public entities from X, whereas the main defined inside X can actually access anything and everything in the class including private members (fields and methods). Now that we have a clear understanding as to what public and private mean, we can use main in the class directly and save a little bit of typing if you want to skip UseX. But, think carefully about what to make public and private as you design a class. Adding a main in X may make it more difficult to see what should be private and what public since you may mistakenly declare something as private and still be able to access it from the main in X. . see Circle.java