> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/languages/java/intermediate/oop/fields.md).

# Fields/state

* A field is a data member of a class. Unless specified otherwise, a field can be public, static, not static and final

## static final

## final

## static variables

## Variable scope

## When to use fields

* If it will be used by the whole class not just a method
  * This depends if the class is a single method class (command pattern)
* It is the state of the instance
* There is only one instance of the object passed into the field which is fixed at compile time
  * If using dependency injection, this implementation can be different at runtime
* You should never use a field to simplify passing data from one method to another method.
* The object of the field will always be used in same way ie call to some instance method to apply some logic
  * Where as the parameter, depending on its state may be used differently

### When to use over a method variable or parameters

* Parameters constantly change, when the method is called.

## Links
