DEV Community

Valentin Silvestre
Valentin Silvestre

Posted on

Explain what really happening when you put final in a class Like I'm Five

Variable change to constant ?
And what about function ?

My question is about what happen deep in the langage. (PHP or java, whatever)

Top comments (5)

Collapse
 
mohr023 profile image
Matheus Mohr

I guess you can either ask for a "like I'm five" explanation, or ask what happens deep in the language :P

"final" means that thing doesn't change, simple as that.

As for a deeper explanation considering Java, "final" tells the compiler that this element can be accessed/used without all the usual safe checking, allowing it to use such elements in multi-threaded processes without needing to synchronize it.

There's a great answer here: stackoverflow.com/questions/273695...

Collapse
 
kayis profile image
K

Does it prevent extension?

Collapse
 
mohr023 profile image
Matheus Mohr

Yes, on it's own, the final modifier prevents a class from being extended. There are some workarounds for that, like delegating the final class calls through another (Foo is final, so you create Bar with the same interface as Foo, make it redirect every call to Foo's methods, and then extend Bar when you need. This is specially useful when you have absolutely no way of changing the code and still want to reuse it's functionalities)

Collapse
 
bertilmuth profile image
Bertil Muth • Edited

I wrote a post with code examples that explains what final does to classes concretely.

Collapse
 
vasilvestre profile image
Valentin Silvestre

Composition is funny, thanks !