Kotlin 中的类实现 (以后再也不用new)
Kotlin声明 preson一个类,类中创建一个pens方法
第一种实现 无参类
class Person {
open fun pens(name: String) {
println("${name}教育")
}
}
在kotlin中类还是用class修饰 ,大家应该看到了不用的关键词 open ,fun 。
【open 关键词】
如果你允许创建一个类的子类,需要使用open 修饰符来标示这个类,另外需要给每一个可以被重写的属性或者方法添加open 修饰符
【abstract 关键词】
Kotlin中可以将一个类声明为abstract ,这种类不能被实例化。抽象类中抽象成员始终是open的,所以不需要显示的使用open修饰符,非抽象函数并不是默认open,但是可以标注为open的
Kotlin 实现类中的 次构造器
open class Person {
lateinit var name: String
//lateinit 只用于变量 var,而 lazy 只用于常量 val
//次构造器
constructor (name: String) {
println("$name")
}
【constructor 关键词】
在Java中,构造方法名须和类名相同;而在Kotlin中,是通过constructor关键字来标明的,且对于Primary Constructor而言,它的位置是在类的首部(class header)而不是在类体中(class body)。
第二种实现 带有参数类
class Person constructor(username: String, age: Int){
private val username: String
private var age: Int
init{
this.username = username
this.age = age
}
}
【init关键词】
init{}它被称作是初始化代码块(Initializer Block),它的作用是为了Primary Constructor服务的,由于Primary Constructor是放置在类的首部,是不能包含任何初始化执行语句的,这是语法规定的,那么这个时候就有了init的用武之地,我们可以把初始化执行语句放置在此处,为属性进行赋值。
主函数 初始化(注意 Person()在也不用new了)
fun main(args: Array<String>) {
val person = Person()
person.printInfo()
}
Kotlin类的继承
class Sons: Person("职度") {
fun Person.all()="dddddd"
fun Sons.sums(a:String,b:String)=a+b
fun fins(sons:Sons){
println(sons.sums("dd","rrr"))
println(sons.pens("职度"))
}
第三种实现 数据类
在Kotlin中,数据类的实现
//data 数据类
data class KtBean(
val message: String,
val result: List<Result>,
val status: String
)
data class Result(
val followMovie: Int,
val id: Int,
val imageUrl: String,
val name: String,
val rank: Int,
val summary: String
)
【data 关键词】
在Kotlin中,存在数据类这样一个概念,我们经常创建一些保存数据的类,并标记为 data,相当于Java中拥有Set和Get方法的实体类。下面来作个对比:Java实体类:
第四种实现 枚举类
Kotlin的枚举类与Java定义一个枚举类非常相似
enum Color {
RED, GREEN, BLUE
}
Kotlin为枚举类指定数值
enum class Color(rgb: Int) {
RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF)
}
Kotlin 中的接口定义
Kotlin接口都是用interface关键字声明
interface Contract {
//Iview
interface Iview{
fun GetViewDate(mktbean:KtBean)
}
}
Kotlin用冒号:实现接口 ,同时继承也是使用 :
open class KtActivity : AppCompatActivity(), Contract.Iview {
}
最后谈谈可见性修饰符
【private关键词】
本类内部(包含其所有成员)都可见
【protected 关键词】
只在本类内部+子类中可见
【public 关键词】
能见到类声明的任何客户端都可以见到其public成员
【internal关键词】
能见到类声明的本模块内的任何客户端都可以见到其public成员
Kotlin基础篇【1】Android Studio 3.0 Kotlin环境配置
Kotlin基础篇【2】初识Kotlin的意义
Kotlin基础篇【3】Kotlin基础语法
Kotlin基础篇【4】when,if,in,is 关键词