之前主要介绍是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 条评论) |