Flash cards
Review the key moves
What is the main idea behind Java Non-Access Modifiers?
Lesson checks
Practice each idea before moving on
Short Mimo-style checks built from this lesson's code, terms, and sequence.
Which statement best captures the main point of this lesson?
Complete the missing token from the example code.
public ___ Main {Put the learning moves in the order that makes the concept easiest to apply.
Non-Access Modifiers
Non-access modifiers do not control visibility (like public or private ), but instead add other features to classes, methods, and attributes.
The most commonly used non-access modifiers are final , static , and abstract .
Final
If you don't want the ability to override existing attribute values, declare attributes as final :
Example
public class Main {
final
int x = 10;
final
double PI = 3.14;
public static void main(String[] args) {
Main myObj = new Main();
myObj.x = 50; // will generate an error: cannot assign a value to a
final
variable
myObj.PI = 25; // will generate an error: cannot assign a value to a
final
variable
System.out.println(myObj.x);
}
}Static
A static method belongs to the class, not to any specific object. This means you can call it without creating an object of the class.
staticNote
A static method belongs to the class itself. You can call it without creating an object, but it cannot use variables or methods that belong to an object.
Abstract
An abstract method belongs to an abstract class, and it does not have a body. The body is provided by the subclass:
Runnable example
// abstract class abstract class Main { public String fname = "John"; public int age = 24; public abstract void study(); // abstract method
}
// Subclass (inherit from Main) class Student extends Main { public int graduationYear = 2018; public void study() { // the body of the abstract method is provided here System.out.println("Studying all day long");
}
}Non-Access Modifiers List
For classes , you can use either final or abstract :
| Modifier | Description |
|---|---|
| final | The class cannot be inherited by other classes (You will learn more about inheritance in the Inheritance chapter ) |
| abstract | The class cannot be used to create objects (To access an abstract class, it must be inherited from another class. You will learn more about inheritance and abstraction in the Inheritance and Abstraction chapters) |
For attributes and methods , you can use the one of the following:
| Modifier | Description |
|---|---|
| final | Attributes and methods cannot be overridden/modified |
| static | Attributes and methods belong to the class, not to objects. This means all objects share the same static attribute, and static methods can be called without creating objects. |
| 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). You will learn more about inheritance and abstraction in the Inheritance and Abstraction chapters |
| 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" |