This series of articles to learn about Kotlin and Anko plugins Develop an Android project through Kotlin.
Kotlin-Anko Learning(1) Kotlin, Anko Introduction
Kotlin-Anko Learning (2) Kotlin Syntax Basics - Basic Types
Kotlin-Anko Learning (3) Kotlin Syntax Basics - Keyword package, Import, if, when, for, while, return, break, continue
Kotlin-Anko Learning (4) Kotlin Syntax - Classes, Inheritance, Abstract Classes
Kotlin-Anko Learning (5) Kotlin Syntax - Properties, Fields, Interfaces
Kotlin-Anko Learning (6) Kotlin Syntax - Modifiers
There are these four visibility modifiers in Kotlin: private, protected, internal, and public. The default visibility is public if the modifier is not explicitly specified. where the visibility of the internal modifier is the same module, which is not available in java.
Modifiers for modifiers: classes, objects, interfaces, constructors, methods, properties and their setters can all have visibility modifiers. (The getter always has the same visibility as the property. )
A module in Kotlin refers to a set of Kotlin files compiled together: the
An IntelliJ IDEA module
A Maven project
A Gradle source set
A set of files compiled by one ＜kotlinc＞ Ant task execution
Top level statement
(located) atKotlin in， Functions can be declared directly under the package、 Properties and Classes、 Objects and interfaces， They are called Top level statement， In particular, the top-level function、 Top-level properties、 top-level object bejava Not allowed in。
Rules for the use of modifiers in top-level declarations.
Do not specify any visibility modifier, the default is, which means your declaration will be visible everywhere
If you declare it as , it will only be visible within the file that declares it
If you declare it as , it will be visible everywhere within the same module
Not applicable to top-level statements
Member declarations inside classes and interfaces in Kotlin can be visibility-modified just like java
Rules for the use of modifiers in classes.
private - visible within this class (containing all its members).
protected - same as private + visible in subclasses.
internal -- any client within this module that can see the class declaration has its internal members visible.
public -- the public members are visible to any client that can see the class declaration
Internal classes - external classes cannot access private members of internal classes (unlike java)
Derived Classes - A subclass overrides a protected member of a parent class, and if visibility is not specified, then it is also protected in the subclass.
Here the basic rules for the use of visibility are covered. Next learn the concept of extension
extensions As the name implies, it adds code to the extensions sex，java in which we can inherit from、 Decorator pattern to add functionality to classes，(located) atKotlin A special declaration can be passed in， functional extensions，Kotlin there is in it Extended functions harmony Extended Properties。
Kotlin in， Extended functions spelling：" fun Receiver Type. Function Name() " That is, being extensions type to be used as the Extended functions prefix。
extensions is statically resolved： extensions method does not add a new member to the class， Just by"." expression to call this new function（ i.e.： called Extended functions is determined by the type of the expression in which the function call is made， Instead, it is determined by the result of the expression's runtime evaluation）
Extended functions Can have the same name as a member function of a class， Priority calls to member functions， If it is an overload of a member function， can be called。
Extension functions can define nullable (null) receivers, i.e., extension functions of the null receiver type that support nullable types without changing the functions in the class, with the determination of the null type being inside the extension function.
As you can see from the above， in caseD Type is empty， invoke d.doo() method will report an error， We can define nullable doo() Extended functions settle (a dispute)。Any.toString() Just use this method to solve the problem of accepting nullable types。
Extended Properties together with Extended functions use the same， No actual insertion of members into the class， So for the behind-the-scenes fields that are not valid， i.e.： Extended Properties Can't have an initializer， Only the displayedget、set approach。
Companion object extension
If a companion object is defined in the class, we can extend the functions and properties of the companion object.
For top-level extensions, in other packages, you can call the
Extended declaration as a member
Inside a class you can declare extensions for another class. If there are multiple implicit receivers - the object members of which can be accessed without qualifiers. The instance of the class in which the extension declaration is located is called the distribution receiver, and the instance of the receiver type in which the extension method call is located is called the extension receiver. In the case of a conflict between the member names of a distribution recipient and an extension recipient, the extension recipient takes precedence. Access can also be specified by qualifiers
The motivation is understood as optimizing the way the code is written and writing a more worrying code by extension.
For example, the Collections tool class in java.
Here we finish introducing the concepts related to extensions, the inclusion of extensions makes it possible to better handle the extensibility of the code in solving everyday problems.
Official website: https://www.kotlincn.net
>>1、Chinas first superhighway to open in 2022 without fear of speeding2、Blockchain New Economy Hangzhou Summit 2018 Ends Perfectly Hangzhou Wants to Build Chinas Blockchain Capital3、Verints Smart HRM Suite Boosts Workforce Efficiency with AI Technology4、What did these blockchain tech gurus talk about in 20185、How to learn C language systematically No more confused time wasters