Non-Access Modifiers
There are two kinds of modifiers:
- Access modifiers, which control the access level (described in Week 9), and
- Non-access modifiers, which do not control access level, but provide other functionality.
Non-Access Modifiers for Classes
For classes, you can use either final
or abstract
:
Modifier |
Description |
final
|
The class cannot be inherited by other classes.
|
abstract
|
The class cannot be used to create objects. (To access an abstract class, it must be inherited from another class.)
|
Non-Access Modifiers for Attributes and Methods
For attributes and methods, you can use one of the following modifiers:
Modifier |
Description |
final
|
Attributes and methods cannot be overridden/modified.
|
static
|
Attributes and methods belong to the class, rather than an object.
|
abstract
|
Can only be used in an abstract class, and can only be used on methods.
The method does not have a body, for example, abstract void run( ); .
The body is provided by the subclass (inherited from).
|
transient
|
Attributes and methods are skipped when serializing the object containing them.
|
synchronized
|
Methods can only be accessed by one thread at a time.
|
volatile
|
The value of an attribute is not cached thread-locally, and is always read from the “main memory.”
|