APP下载

Kotlin与Java关系大解密(二)

消息来源:baojiabao.com 作者: 发布时间:2024-11-29

报价宝综合消息Kotlin与Java关系大解密(二)

前言

之前主要介绍是kotlin与最基本的变数宣告和型别与java的对比关系。我们都知道Java语言是完全的面向物件语言。而kotlin中的变数和方法虽然可以脱离类存在,而且支援函数语言程式设计,但是并不影响kotlin作为一门面向物件语言而存在。下面主要介绍一下kotlin与java在面向物件用法上的对比。

建构函式

1.kotlin主建构函式

class Person constructor(var name:String,var age:Int){}

转换成java程式码:

说明: kotlin相比java的建构函式的宣告更加多样化,kotlin的建构函式分为主建构函式和次建构函式,主建构函式只能有一个,次建构函式可以有多个。kotlin类宣告时如果不加修饰符,class预设为final型别,这点与java是不同的。如果要该类可继承,需要在class前新增open关键字修饰。除此之外kotlin中类成员变数自动生成get/set方法,呼叫时不用使用方法呼叫,而是可以直接进行访问。

2.init初始化程式码块

kotlin程式码:

对应java程式码:

说明:kotlin除了主建构函式之外还提供一个init初始化程式码块,从对比java程式码可以看出,init函式会插入到主建构函式的后面,所以它的执行时机在主建构函式之后,所以在init程式码块中可以访问主建构函式中的变数。

3.次建构函式

kotlin程式码:

对应java程式码:

说明:kotlin中的次建构函式可以有多个,但是在该类包含有主建构函式时,最终都需要委托呼叫到主建构函式。其实通过转换成的java程式码中可以看出。其实kotlin中的主次建构函式概念,其实在java中会解析成引数不同的建构函式,它最主要的保证了类在继承关系下的正常初始化。

可见性修饰符

kotlin程式码:

对应java程式码:

说明:kotlin中一共有private、protected、internal、public四种可见性修饰符。如果变数不加修饰符预设情况为public。我们从转化的java中程式码可知,kotlin把类中不论是何种修饰符的变数全部私有化,从过成员方法的访问许可权来达到修饰符的语法效果。kotlin相较于java通过编译层来限制类中成员变数呼叫的规范性与安全性。

巢状类与内部类

koltin程式码:

对应java程式码:

说明:这里与java语言不同,如果kotlin像java一样只用class宣告内部类 kotlin的内部类会已静态内部类的形式展现。我们都知道静态内部类不是持有外部类的引用的,所以不能饮用外部类中的成员变数与方法。那如果我们想让宣告的内部类持有外部类的引用,那需要怎样写呢? 请看下面。

kotlin程式码:

对应java程式码:

说明:我们在class前面加入inner关键字,就可以对应生成类似于java中的内部类,可以访问外部类的变数。

2020-02-03 23:14:00

相关文章