← Back to Core Java Course | Chapter 7: OOP Core | Lesson 6 of 11

Java Non-Access Modifiers

Non-access modifiers like static, final, and abstract control a class, method, or variable's behavior rather than its visibility, unlike access modifiers such as public or private.

What are Non-Access Modifiers?

Non-access modifiers control a class, method, or variable's behavior rather than its visibility -- keywords like static, final, and abstract change how a member works, unlike access modifiers such as public or private which control who can see it.

Example: What are Non-Access Modifiers?

java
class Circle {
	static final double PI = 3.14159; // static and final change behavior, not visibility
}
public class Main {
	public static void main(String[] args) {
		System.out.println(Circle.PI);
	}
}

The static Modifier

The static modifier attaches a field or method to the class itself rather than to individual objects, so a static field is shared by all instances and a static method can be called without creating an object first.

Example: The static Modifier

java
class Counter {
	static int count = 0;
	static void increment() {
		count++;
	}
}
public class Main {
	public static void main(String[] args) {
		Counter.increment();
		Counter.increment();
		System.out.println(Counter.count);
	}
}

The final Modifier

The final modifier prevents further change: a final variable can only be assigned once, a final method cannot be overridden by a subclass, and a final class cannot be extended by any other class.

Example: The final Modifier

java
final class Constants {
}
public class Main {
	public static void main(String[] args) {
		final int max = 100;
		// max = 200; // would not compile
		System.out.println(max);
	}
}

The abstract Modifier

The abstract modifier marks a class as unable to be instantiated directly and marks a method as having no body, requiring every concrete subclass to provide its own implementation of that method.

Example: The abstract Modifier

java
abstract class Shape {
	abstract double area();
}
class Square extends Shape {
	double side = 4;
	double area() {
		return side * side;
	}
}
public class Main {
	public static void main(String[] args) {
		System.out.println(new Square().area());
	}
}

Combining Non-Access Modifiers

Non-access modifiers can be combined on the same member when their meanings don't conflict, such as static final for a shared, unchangeable constant, or abstract and static appearing together in different contexts within an abstract class.

Example: Combining Non-Access Modifiers

java
class Config {
	static final int MAX_USERS = 100; // static + final together
}
public class Main {
	public static void main(String[] args) {
		System.out.println(Config.MAX_USERS);
	}
}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.