http://www.javacoffeebreak.com/articles/toptenerrors.html definitions: class: defines the variables and methods of an object object: instance of a class instance variable: class Foo { int a; } access with: f = Foo(); f.a = 0 class variable: class Foo ( static int a; } access with Foo.a = 0 instance method class Foo { void a { ; } } call with: f = Foo(); f.a(); class method class Foo { static void a { ; } } call with: Foo.a(); instance: each instance of an object has its own variable/method. class: variable/method exists only once. !! static variables can only be accessed from static methods and vice versa. private: method / variable can only be accessed within class public: necessary for main() and toString(). necessary for extending other public methods. declaring array: int foo[] = new int[10]; abstract: abstract public class Foo1 { abstract void Bar(); } public class Foo2 extends Foo1 { void Bar() { ; } } interface: like abstract but without normal methods or variables, only abstract methods and contsants. interface class Foo1 { void Bar(); } public class Foo2 implements Foo1 { void Bar() { ; } } this, super: this references to an object itself. super references a parent method/variable. public class Foo1 { abstract void Bar() { ; } } public class Foo2 extends Foo1 { void Bar() { super.Bar(); } } constructors are never inherited! call to super. in a constructor must be first statement (because otherwise the default constructor is called)