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中的内部类,可以访问外部类的变量。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();