 Here's the design for a class that keeps track of room reservations, with a room name and a day of the week from 0 to 6, with 0 representing Monday. Here are two reservation objects. Each one has its own room name and its own day number. Now let's say we want to keep track of the number of reservations we've created. The problem we need to solve is that there can be only one copy of this number. It doesn't belong to any of the individual reservations. In a sense, the number of reservations belongs to the class. To indicate that a property belongs to the class as a whole, rather than any of the object instances built from that class, we underline it in the UML diagram, and we use the word static when we declare it inside of our class. We'll have static, int, and reservations equals 0. The constructor will add this line, n reservations plus plus, to increment the number of reservations every time the constructor is invoked. Let's add some code to display the number of reservations. This doesn't need to be an instance method. It's accessing a static variable, not an instance variable, so it will be a static void method called show n reservations, and it'll print number of reservations, created is, and then n reservations. Let's compile that. And here's a test program. This test program creates two reservations and shows each one. Then it calls the show n reservations method the static method that belongs to the class. By convention, when you call a static method, you use the class name instead of an instance name to remind people that this method is static and it belongs to the class. Let's compile that, and let's run it. It's important to know that an instance method can access a static variable or method. For example, I can have an instance method called good, which will print the number of reservations, a static property, or call the static method. That compiles fine. It doesn't work the other way. If I have a static method, it can't access one of the instance properties, and it can't call an instance method. If I try to do that, I get a compile error that says a non-static variable or a non-static method cannot be referenced from this static context. Here's a table that summarizes access. Static methods can access instance or static methods and properties because the static ones belong to the entire class. Static methods can only access static methods and properties. They can't access anything that belongs to an individual instance of the class. Here's another place we can use static variables to convert a day number to a day name. We can use a static array of strings called day name, and it'll have the names of the days of the week. It never changes, so it can be final. Now we can use it when showing a reservation. Instead of the day number, we'll put the day name for that number. Let's go to our test reservation, compile everything, and run it. There's the use of our static array of strings. In summary, use instance methods and properties for things that differ for each object. Use static methods and properties for things that are independent of an individual object and belong to the class as a whole.