Worked example
class Dog { // your class — no public
String name; // a field
int age; // another field
}
public class Main { // the one public class
public static void main(String[] args) {
Dog d = new Dog(); // make an object
d.name = "Rex"; // fill its fields
d.age = 3;
System.out.println(d.name + " is " + d.age);
}
}
The class is a blueprint: it lists what every Dog has. new Dog() builds one actual object from that blueprint, and d.name reaches into it.
This also answers an old question. main is static, which is why the methods you wrote in module 3 had to be static too. Methods that belong to an object — like the ones you will write in 4.3 — do not need it: they are called on the object, as d.bark().