Code Monkey home page Code Monkey logo

kotlin-note's Introduction

kotlin-note

写kotlin有一段时间了,整理下常用的知识点,方便复习。

1、基本数据类型
Kotlin中使用的基本数据类型包括:数字、字符、布尔值、数组与字符串。

2、类的继承
在Kotlin中,所有类在默认情况下都是无法被继承的,即所有类在默认情况下都是final的。想要开放继承,需要添加关键字open,只有被open修饰的类才能被继承,否则编译器会报错。

3、类方法重写
在kotlin中,类中的方法默认是不能被重写的,需要在方法前面加上open关键字后才可以重写;子类要重写父类中open修饰的方法,需在子类的方法前面加上override关键字。

4、类属性重写
类属性和类方法差不多,类属性前加open关键字表示方法可以被重写,子类想要重写父类中open修饰的属性,子类属性前同样需要加上override关键字。

  • val属性可以被val属性override
  • val属性可以被var属性override
  • var属性只可以被var属性override
  • 本质上val相当于get方法,var相当于set与get方法

5、内部类

  • kotlin默认的内部类是静态内部类,不能持有外部类的状态(属性、方法等)
  • 给内部类加上inner关键词之后,就会变成非静态内部类,可以访问外部类的属性和方法
  • 非静态内部类想访问外部类的属性,可以使用 this@外部类名.外部类属性名 的形式访问

6、延迟初始化

  • lateinit
    一般地,属性声明为非空类型的必须在声明时进行初始化,否则编译会报错,但想要延迟初始化的时机,可以使用lateinit关键字进行修饰,在使用的时候才进行实例化。
    但是lateinit只能修饰非kotlin原生类型(数字、字符以及布尔值),因为kotlin会使用null对每一个用lateinit修饰的属性做初始化,而原生类型是没有null类型,所以无法使用lateinit进行修饰。
    lateinit var lazyValue: String
  • by lazy
    lazy()是接受一个lambda表达式并返回一个Lazy<T>实例的函数,lazy应用于单例模式(if-null-then-init-else-return),当且仅当变量被第一次调用的时候,委托方法才会执行。
    val lazyValue: String by lazy { println("HaHaHa!") "Hello" }
    即第一次调用会执行lambda表达式并记录结果返回,输出HaHaHa和Hello;而第二次调用只会返回记录的结果数据,输出Hello。

PS:lateinit 只用于变量var,而lazy只用于常量val

7、数据类
Kotlin会为类的参数自动实现get和set方法,对于实体类的使用上会变得更加的方便。
class User(val name: String, val age: Int, val gender: Int, var address: String)
kotlin中有一个data关键字,用data关键字来声明一个数据类,除了会自动实现get和set方法外,还会自动生成equals、hashcode、toString
data class User2(val name: String, val age: Int, val gender: Int, var address: String)

8、object和companion object
object可以修饰类,表示该类的方法和变量都是静态的。
companion object为伴生对象,伴生对象在类中只能存在一个,伴生对象中所有的方法和变量都是静态的。

kotlin-note's People

Contributors

leerogg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.