参考教程: http://blog.csdn.net/qq285016127/article/details/72668084
创建一个类
- 点击右键 new -> kotlin file/class 这样就创建了一个kotlin文件了后缀是kt
//这样就创建了一个类,kotlin文件就变成了一个类了,不是kt后缀了
class Person{
}
声明成员变量
- 声明一个变量时必需初始化
内部自动生成了setter/getter方法
变量分为可变和不可变的:
- 可变: var 表示
- 不可变: val表示
- 注意类型不再是int, double之类的了,而是Int, Double, 八大基本类型都是这样的
- Double的变量不需要加上d这样的字母,folate的类型就需要加上f字母
class Person{
/**
* 声明变量:
* 可变变量: var
* 不可变变量: val
*/
val name : String = ""
var age : Int = 0
}
类的继承
- 如果一个类可以被继承的话需要在class之前加上open
//父类
open class Person{
/**
* 声明变量:
* 可变变量: var
* 不可变变量: val
*/
val name : String = ""
var age : Int = 0
}
//子类
//()代表父类的无参构造器
class Student : Person() {
//学生的学科
var courses : Int = 3
//学生的身高
var height : Double = 1.70
}
构造器的创建
- 构造器:
- 主构造器 : 在创建类的时候就一起指定的
class Student(name : String, var courses : Int) : Person() {
//学生的身高
var height : Double = 1.70
}
- 次构造器 : 需要使用constructor关键字
//这里可以给参数一个默认值,如果不重新赋值的话,就会使用默认值
class Student(name : String, courses : Int = 3) : Person() {
//学生的身高
var height : Double = 1.70
/**
* 1,子构造器必须重写主构造器,需要给主构造器的所有变量赋值
* 2,需要注意的是次构造器的构造器不能跟主构造器的参数一样
* 3,次构造器默认不会创建setter/gerter方法,也不能使用var/val
* 4,如果次构造器不需要做任何参数可以不需要方法体
*/
constructor(newName : String, newCourses : Int, age : Int):this(newName, newCourses){
Log.v("lai", newName)
}
}
在Kotlin里没有方法这个叫法,只有函数
- 定义函数需要使用fun关键字
//1,创建函数需要使用到fun关键字
//2,返回值是Int
fun study(courses : String) : Int{
if ("语文".equals(courses)){
return 99
}
return 80
}
- 使用一行代码定义函数
- $ : 可以用来拼接字符串,跟java的”++”一样
//1,如果方法体里面只有一行代码,可以使用如下格式
//2,如果需要拼接字符串可以使用$符,变量的后面需要加上空格
fun printy() : String = "$name 的身高是 $height"
- 如果函数不需要返回值可以使用Unit关键字
//1,如果一个方法不需要返回值,可以使用Unit关键字,可以认为是java里面的void
fun paly() : Unit{
Log.v("lai", "我是天才!!!")
}
重写setter/getter方法
- field表示当前属性
//field关键字表示当前的属性
//学生的身高
var height : String = "1.70"
get() = "这是某个学生的身高: " + field
set(value){
field = value + 0.1
}
静态变量
- 定义静态变量需要在companion object代码块中定义
//在java中定义静态变量可以使用static声明,可是在kotlin中需要在companion object的代码块中定义
//注意访问修饰符,private是不可以被外界访问的
companion object{
public val MATH : Int = 1
public val CHINESE : Int = 2
}
对象的调用
- kotlin创建对象不跟java一样,不需要new关键字
//1,kotlin创建对象不跟java一样,不需要new关键字
val s1: Student = Student("这是一个名字", 21)
//2,可以不需要指定变量的类型,系统会自己推导出类型是什么
val s2 = Student("呵呵呵", 18)
//3,如果构造器的参数有默认的的话,我们可以不需要传递值进去,系统会使用吗默认值
val s3 = Student("嚯嚯嚯")
//4,如果一个对象不想在声明的时候就赋值,可以设置为null,但是必须在类型的后面加上一个?
var s4 : Student? = null
//5,在使用s4的时候,如果s4不为null,系统才会使用,为null则不会使用
s4?.printy()
调用变量的setter/getter方法
//1,这样就是调用height的get方法
s1.height
//2,这样就是调用height的set方法
s1.height = "这是新的身高"