If they do, when do they use it so I can understand it better and know when to use it.

A final class is simply a class that can't be extended.

(It does not mean that all references to objects of the class would act as if they were declared as final.)

When it's useful to declare a class as final is covered in the answers of this question:

  • Good reasons to prohibit inheritance in Java?

If Java is object oriented, and you declare a class final, doesn't it stop the idea of class having the characteristics of objects?

In some sense yes.

By marking a class as final you disable a powerful and flexible feature of the language for that part of the code. Some classes however, should not (and in certain cases can not) be designed to take subclassing into account in a good way. In these cases it makes sense to mark the class as final, even though it limits OOP. (Remember however that a final class can still extend another non-final class.)

Answer from aioobe on Stack Overflow
🌐
Coderanch
coderanch.com › t › 384263 › java › instantiating-final-class
instantiating the final class ? (Java in General forum at Coderanch)
Hi i have a doubt how we instantiate ... clear my doubt whether the above is correct or not? thanks in advance ramesh ... You can instantiate a final class just like any other non-abstract class....
🌐
Quora
quora.com › Can-I-create-an-object-in-my-final-class
Can I create an object in my final class? - Quora
Answer (1 of 8): Final is a type of keyword in java that is maily used to restrict the users.if we declare any class as final we can not extend the class of the final means its is fixed.'final' simply makes the object reference unchangeable. The object it points to is not immutable by doing this....
🌐
Coderanch
coderanch.com › t › 425504 › certification › Final-Class-instantiated
Final Class cannot be instantiated (OCPJP forum at Coderanch)
class A{} class B extends A{} class ... the above code how come an instance of D can be made since D is a final class...as far as i know that final class is never instantiated....
🌐
Quora
quora.com › Is-it-possible-to-make-an-object-of-the-final-class
Is it possible to make an object of the final class? - Quora
Answer (1 of 5): What do you mean by final. It’s done it’s perfect and it need not be changed or altered. If you make a variable final you cant change its value. Similarly if you make a class final you can’t add any more functionalities to it. What’s more interesting you can’t make an interface ...
🌐
SAP
help.sap.com › doc › abapdocu_750_index_htm › 7.50 › en-US › abapclass_options.htm
CLASS - class_options - ABAP Keyword Documentation
The addition ABSTRACT defines an abstract class class. No instances can be created from an abstract class. To use the instance components of an abstract class, a concrete subclass of the class must be instantiated. ... The addition FINAL defines a final class class.
🌐
Java67
java67.com › 2017 › 07 › can-you-make-abstract-class-method-final-in-java.html
Can you make an Abstract Class or Method Final in Java? Example | Java67
An abstract class is incomplete and can only be instantiated by extending a concrete class and implementing all abstract methods, while a final class is considered complete and cannot be extended further.
🌐
EDUCBA
educba.com › home › software development › software development tutorials › java tutorial › final class in java
Final Class in Java | Learn How does Final Class work in Java?
May 14, 2024 - A class declaration with the word Final is known as the final class. Final Class in Java can not be inherited & can not be extended by other classes. A final class can extend other classes; It can be a subclass but not a superclass. When creating an immutable class, the final class is the best answer.
Address   Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
Find elsewhere
🌐
SAP
help.sap.com › doc › abapdocu_752_index_htm › 7.52 › en-US › abeninheritance_abstract_final.htm
Abstract and Final Methods and Classes - ABAP Keyword Documentation
Abstract and final methods or classes ... in the same class. They must first be implemented in a subclass of the inheritance tree. Abstract classes cannot, therefore, be instantiated....
🌐
Oracle
docs.oracle.com › javase › specs › jls › se15 › html › jls-8.html
Chapter 8. Classes
September 16, 2025 - A named class may be declared abstract (§8.1.1.1) and must be declared abstract if it is incompletely implemented; such a class cannot be instantiated, but can be extended by subclasses. A class may be declared final (§8.1.1.2), in which case it cannot have subclasses.
🌐
Scaler
scaler.com › topics › final-class-in-java
Final Class in Java | Scaler Topics
July 21, 2022 - As the name suggests, the Final Class in Java uses the final keyword for its declaration. The final keyword in Java restricts the user; similarly, the final class means that the class cannot be extended. We can only create a final class if it is complete, which means it cannot be an abstract class.
🌐
Buyya
buyya.com › 254 › Lectures › Lecture13.pdf pdf
Buyya
It provides cluster, grid, cloud computing resources such as books, teaching presentation slides, links to numerous distributed resource management systems, environments, software, documents, conferences, announcements
🌐
Wiki-final
wiki-final.com › q › 12332824
Can a final class be instantiated? (2022) - Wiki-Final
You can instantiate a final class just like any other non-abstract class. The only limitation is that you cannot create subclasses of a final class.
🌐
SAP Community
community.sap.com › t5 › application-development-and-automation-discussions › why-final-classes-are-used-in-abap › m-p › 9187490
Solved: Why Final Classes are used in ABAP - SAP Community
January 5, 2013 - Hence, a Final class is always to be instantiated.So , lets say you have an inheritance hierarchy, within the inheritance hierarchy, you would typically want to ensure to not instatiate the Super classes, rather instantiate the concrete(final) ...
🌐
Brainly
brainly.com › computers and technology › high school › which one can be instantiated? 1) abstract classes 2) interfaces 3) final classes 4) none of these
[FREE] Which one can be instantiated? 1) Abstract classes 2) Interfaces 3) Final classes 4) None of these - brainly.com
The correct answer is option 3) Final classes, as they can be instantiated. Abstract classes and interfaces cannot be instantiated because they are designed to serve as templates or contracts for other classes.
🌐
GeeksforGeeks
geeksforgeeks.org › java › final-keyword-in-java
final Keyword in Java - GeeksforGeeks
Reference final variables cannot change which object they point to though the internal state of the object can change. Static final variables represent constants shared across all objects. Blank final variables are declared without initialization and must be assigned once before use. Local final variables inside methods must be initialized within their block. The final keyword is used in exactly 3 main contexts: A variable declared with final becomes constant after one assignment. ... public class Geeks{ public static void main(String[] args) { final double PI = 3.14159; System.out.println("Value of PI: " + PI); } }
Published   July 22, 2014
🌐
GeeksforGeeks
geeksforgeeks.org › java › difference-between-final-and-abstract-in-java
Difference between Final and Abstract in Java - GeeksforGeeks
July 12, 2025 - And also, for the abstract classes, we need to create a child class to provide the implementation whereas for final class we can't create child class. therefore, a final abstract combination is illegal for classes. Hence, a final class cannot contain abstract methods whereas an abstract class can contain a final method. Below is an example which demonstrates the combination of abstract and final classes.
🌐
TutorialsPoint
tutorialspoint.com › home › articles on trending technologies › can a final class be subclassed in java?
Can a final class be subclassed in Java?
February 27, 2025 - In Java, a class is declared final using the final keyword. The final modifier for finalizing the implementations of classes, methods, and variables. ... It cannot be extended.