前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >惊鸿一瞥之Kotlin

惊鸿一瞥之Kotlin

作者头像
大话swift
发布2019-09-17 15:59:01
4150
发布2019-09-17 15:59:01
举报
文章被收录于专栏:大话swift大话swift

看了Google开发者大会之后你啥感觉?一个是flutter真的可以入手啦,另一个就是Kotlin需要看看啦。为啥要看Kotlin呢?因为Google已经帮你想好说服领导采用Kotlin的理由啦……??????

Hello World

代码语言:javascript
复制
fun main(args: Array<String>) {
    println("Hello,world")
}

Functions

代码语言:javascript
复制

//独有的Unit 为了兼容Java的void
fun printMessage(message: String): Unit {
    println(message)
}

fun sum(x: Int, y: Int): Int {
    return x + y
}

fun multiply(x: Int, y: Int) = x * y

fun可谓是各个高级语言出彩的地方,Kotlin的函数可是更加的丰富,可变参数,参数默认值,以及缺省主体的函数=返回,以及兼容Java的Unit修饰符……可谓是只有你想不到的,没有Kotlin想不到花样

Variables

代码语言:javascript
复制
var a: Person = Person("A")
    val b = Person("B")

变量声明来说没有什么特殊的,var声明可变变量,val不可变,只是个关键字不同而已

Null Safety

作为Google强烈推荐的替代Java的产品(估计恨死Java啦),null类型声明在Java中没有的(Java需要为变量手动声明null,并且不存在显示声明null)

在这里更确切的说是nullable更贴切,也就是说Kotlin出现的变量存储数据有两重含义:内部可为空、不可为空,变量声明就注定有的可以是null而有些不能为null。这种语法更贴切显示生活----好比鲁迅先生的那就似乎好像只有……

Classess

代码语言:javascript
复制
//infix
class Person(val name: String) {
    private var likedPeople = mutableListOf<Person>()
    infix fun likes(other: Person) {
        likedPeople.add(other)
    }
}

class Customer
class Contact(val id: Int, var email: String)

作为新兴的面向对象语言,Kotlin也有class,有class就有构造函数,函数 ,属性,这些都很常规……

既然是全新的语言,那么就会有他自身不同之处,我们看下面的代码

代码语言:javascript
复制

open class Dog(name: String) {

    open fun sayHello() {
        println("wow…")
    }
}

class Yorkshire(name: String) : Dog(name) {
    override fun sayHello() {
        print("wif wif")
    }
}

出现了open这个关键词,没错就是它,你你猜能声明一个可继承的class,是不是跟我们以前的有点相反---Java是默认class可继承,swift也是…

Generics

泛型作为现代会的编程语言那是必不可少的,lz的朋友都面向对象编程的我们就不多说,直接上代码一度以为快

代码语言:javascript
复制
//泛型
class MutableStack<E>(vararg items: E) {
    private val elements = items.toMutableList()
    fun push(element: E) = elements.add(element)
    fun peek(): E = elements.last()
    fun pop(): E = elements.removeAt(elements.size - 1)
    override fun toString(): String = "MutableStack(${elements.joinToString()})"
}

Inheritance

继承是面向对象的基础特性啦,我们还是那上面的作为示例

代码语言:javascript
复制
open class Dog(name: String) {

    open fun sayHello() {
        println("wow…")
    }
}

class Yorkshire(name: String="Jack") : Dog(name) {
    override fun sayHello() {
        print("wif wif")
    }
}

在Kotlin中fun好class默认都是final,fun需要声明为open才可覆写

子类要想继承父类构造函数的属性变量,需要在子类构造函数中做声明。(如下里的粒子)

代码语言:javascript
复制
open class Tiger(val origin: String) {
    fun sayHello() {
        println("A tiger from $origin says: grrhhh!")
    }
}

class SiberianTiger : Tiger("Siberia")                  // 1

fun main() {
    val tiger: Tiger = SiberianTiger()
    tiger.sayHello()
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档