I don't understand why is possible to write a function outside a class in Kotlin ? Is that a good practice ?
For example, it's possible in Kotlin to write a function outside my MainActivity
class :
fun hello(){} class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) hello() } }
In Java, this is impossible! That's not how an object-oriented language works normally, right?
In the documentation, they talk of Local Functions for the classic function and Member Functions for the function defined inside a class or object but they don't explain when it's better to use one or the other.
Yes you can definitely have functions outside of a class.
Before you can use (call) a function, you need to define it. To define a function in Kotlin, fun keyword is used. Then comes the name of the function (identifier). Here, the name of the function is callMe .
1. Top-Level Functions. Top-level functions are functions inside a Kotlin package that are defined outside of any class, object, or interface. This means that they are functions you call directly, without the need to create any object or call any class.
In Java, there are only classes; nothing exists outside a class. Edit You can have public methods in non-public classes, but you probably don't want that since the non-public classes will have limited (perhaps none) visibility outside of the declaring class.
In Java, this is impossible! That's not how an object-oriented language works normally, right?
Just stop for a second and reconsider the nature of java's static method. A class is supposed to be a blueprint for objects, describe their behavior and state. But you can call a static method without creating any instances.
How does that fit into the object-oriented picture? How does a static method "belong" to the class it's declared in?
Actually static methods are a hack in Java, they pollute and misuse the OOP notion of a class. But you got used to them over the years so you don't feel that anymore.
Conceptually, a static method is a top-level function and Java uses the name of its declaring class as its namespace. In contrast to that, Kotlin allows you to declare top-level functions without misusing the class for namespacing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With