public methods and variables are available to any class.

protected methods and variables are visible to any class in the same package.

private methods and variables are not visible outside the class.

private protected methods and variables are visible in the class and any sub-class.

final methods cannot be overridden by ones in a sub-class.
final variables may not have the initial value changed.

static methods are "class methods", rather than "instance methods", so they can only access static variables or variables explicitly passed into them.
static variables apply across all instances of the class.

synchronizable methods cannot be run concurrently by multiple threads.

native methods are implemented in a platform dependent way (e.g. C code externally linked to the Java).