前言:今年谷歌宣布kotlin(以下简称为kt)已经成为安卓的官方开发语言,kt的重要性可想而知。就我大约接触一个月的时间来看(中间有事情耽误了),16年的时候以为kt还比较新,但是没想到17年它竟然能成为安卓的官方开发语言,所以想重新再深入学习一下。在我看来,kt主要有以下几个特点:
- kt与java同是基于JVM开发
- kt语言与java语言互通
- kt语言只是在书写上方便,执行过程与java是一模一样
我所写的博客是在一定的java基础上的,有些地方可能不详细,欢迎给我留言讨论~~
最普通方法
class class1{
var name :String=""
var age : Int = 0
fun printText(){
println("我的名字是:"+name+",我的岁数是:"+age);
}
}
//赋值并调用
fun main(arrays : Array<String>){
//创建对象并赋值属性
var class1 = class1();
class1.age = 21;
class1.name="zwq";
class1.printText();
}
类中的set和get
class class1{
var name :String=""
//这里的field可以等价于name这个变量
get() = field.toUpperCase()
set
var age : Int = 0
//这里的field可以等价于age这个变量
get() = field
set(value) {
if (value > 100){
field = -1;
}else{
field = value;
}
}
fun printText(){
println("我的名字是:"+name+",我的岁数是:"+age);
}
}
//调用方法同第一个
- 如果是学过java的话,需要注意,使用set或get时语句后面千万别加分号!
构造函数
//主构造函数
class class2 constructor(name : String){
val name = name;
init {
//执行构造函数执行
println("My name is $name");
}
//次构造函数
constructor(name : String,age : Int) : this(name){
println("My name is $name,My age is $age")
}
}
- 注意 只要生成一个class2对象,init即执行一次。init方法只能在构造函数存在的情况下使用。
例如执行下列代码
var class2 = class2("zwq")
var class2_ = class2("zwq",21)
执行结果如下:
My name is zwq
My name is zwq
My name is zwq,My age is 21
匿名内部类
//声明匿名内部类
interface inter_test {
fun foo(){
}
}
class class3 (){
fun setInter(test : inter_test){
test.foo();
}
}
//使用匿名内部类
fun main(arrays : Array<String>){
var class3 = class3();
class3.setInter(object : inter_test {
override fun foo() {
println("重写匿名内部类方法")
}
})
}