上一篇:Kotlin 基本语法---1.Kotlin 的基本类型
Kotlin 基本语法主要包括以下内容:
- Kotlin 的基本类型
- Kotlin 的类与对象初步
- Kotlin 的空安全类型
- Kotlin 的智能转换
- Kotlin 的的数组与区间
下面要讲的是 Kotlin 的类与对象初步;
二、Kotlin 的类与对象初步
与其他语言相似,Kotlin 也包含类与对象,下面的主要内容是:
- 用 Kotlin 定义父类
- 用 Kotlin 定义子类
- 打印并测试自定义类
- Any() 类
1. 用 Kotlin 定义父类
类与对象在 Java 中我们就有所了解过,而在 Kotlin 中也是大同小异,无非是写法不怎么一样;下面来看一个简单的实例,定义一个父类人,代码为:
//自定义父类(父类要写 open 否则编译不通过),为父类定义了三个参数:name、age、like
open class People(var name: String, var age: String, var like: String) {
//每一次构建时,都会调用这个方法体 init
init {
//其中 this.javaClass.simpleName 是获取子类的类名
println("来了个${this.javaClass.simpleName},姓名:$name,年龄:$age,爱好:$like")
}
}
要注意的是:
- 自定义父类前面要加 open 关键词
- init 方法为每一次构建都会调用的方法
- this.javaClass.simpleName 为获取子类的类名
2. 用 Kotlin 定义子类
接下来定义一个子类男孩去继承人这个父类,代码为:
//Boy继承People
class Boy(name: String, age: String, like: String) : People(name, age, like)
是不是发现,最后为什么没有大括号 "{ }" ?在 Kotlin 中,如果类中没有代码,大括号是可以省略的;下面是要注意的几点:
- 自定义类中没有代码,大括号是可以省略的
- 继承父类的写法为 : People() 这和 Java 中的继承的写法也不一样
知道这两点后,继续定义一个子类女孩继承人这个父类,代码为:
//Girl继承People 继承的写法为 :People 其中People为父类
class Girl(name: String, age: String, like: String) : People(name, age, like)
3. 打印并测试自定义类
定义完子类父类之后,我们就要看一下好不好用了,接下来传入三个参数,打印出结果,代码为:
fun main(args: Array<String>) {
val aGirl: Girl = Girl("女孩", "18", "看电影")
// : Girl 可以省略也可以这么写
val bGirl = Girl("女孩", "10", "喝汽水")
val aBoy = Boy("男孩", "20", "吃零食")
//打印结果
println(aGirl)
println(bGirl)
println(aBoy)
}
要注意的是:
扫描二维码关注公众号,回复:
3689374 查看本文章
- 初始化一个类写法和 Java 也是不同,不用写 new 关键字
- 上面代码中 aGirl 为对象名
- 等号前面的 Girl 为类名,可以省略
- 等号后面的 Girl 为类名,省略了 new 关键字
打印结果为:
可以看出打印结果是没有什么问题的;
4. Any() 类
在 Kotlin 中,Any() 类是所有类的父类,定义一个类去继承 Any() 类:
//所有类都继承与Any
class A : Any()
看一下官网对 Any() 类的介绍:
/**
* The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass.
*/
public open class Any {...}
Kotlin 类层次结构的根。每一个 Kotlin 类都有一个超类。也就是说 Any() 类是所有类的父类;
上面是简单的类与对象介绍;
下面的代码是上面所有的代码,多加练习才能熟能生巧:
//自定义父类(父类要写 open 否则编译不通过),为父类定义了三个参数:name、age、like
open class People(var name: String, var age: String, var like: String) {
//每一次构建时,都会调用这个方法体 init
init {
//其中 this.javaClass.simpleName 是获取子类的类名
println("来了个${this.javaClass.simpleName},姓名:$name,年龄:$age,爱好:$like")
}
}
//Girl继承People 继承的写法为 :People 其中People为父类
class Girl(name: String, age: String, like: String) : People(name, age, like)
//Boy继承People
class Boy(name: String, age: String, like: String) : People(name, age, like)
//所有类都继承与Any
class A : Any()
fun main(args: Array<String>) {
val aGirl: Girl = Girl("女孩", "18", "看电影")
// : Girl 可以省略也可以这么写
val bGirl = Girl("女孩", "10", "喝汽水")
val aBoy = Boy("男孩", "20", "吃零食")
//打印结果
println(aGirl)
println(bGirl)
println(aBoy)
}