Classes are containers. Objects are containers too. Classes are definitions of objects. Like a blueprint. Objects are instances of classes, actual realizations of that. Objects contain data and methods. They are called instance members. Examples of classes: Car, Person, President, Table. Examples of objects: Car gh = new Car("Jason"); President w = new President("Bush"); Person o = new Person("Barack"); What members do you see in an object of type Table? http://www.yankodesign.com/images/design_news/2007/08/03/printer_table.jpg class Table { Leg a, b, c, d; // instance variables Top t; // instance variables Drawer d; // instance variables void openDrawer(int distance) { // instance method // we are going to change the state of this.d here } } class Leg { int height; Color c; Finishing f; // there could be further methods here } class Drawer { ... } Methods, functions, procedures, subroutines: same thing. Classes may contain more than blueprint of objects. Components of the object blueprints are called: instance members. Members = variables and/or methods. Let's model a Horse: class Horse { void talk() { System.out.println("Howdy"); } } class Program { public static void main(String[] args) { Horse a = new Horse(); a.talk(); Horse b; b = new Horse(); b.talk(); } } class Unicorn extends Horse { Horn h; } class Horn { // ... } Horse = {Tail, Leg, Leg, Leg, Leg, Mane, Head, Eye, Eye, ..., talk() } Unicorn = Horse U { Horn } -------------------------------- class Horse { void talk() { System.out.println("Howdy"); } } class Unicorn extends Horse { } class Program { public static void main(String[] args) { Horse a = new Horse(); a.talk(); Unicorn b = new Unicorn(); b.talk(); } } A = {a, b, c} B = A U {x, a} This results in a resolution mechanism called dynamic method lookup.