|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
类其实就是一个模板,一般要把它变成对象才能使用,就是实体化。例如:
- fun main(args: Array<String>) {
- class People
- val p=People()
- print(p)
- }
复制代码 这里的class People就是建了一个人类的模板,下边People()就是给他实体化,然后再赋值给一个常量,这里输出一串没有任何意义的哈希值,输出为:Class_objectKt$main$People@5e2de80c
这个类如何使用呢,下面先给他加点属性:
- fun main(args: Array<String>) {
- class People(var walk:String,var talk:String)
- val p=People("走路","说话")
- println(p.walk)
- println(p.talk)
- }
复制代码
把他实体化的时候同样也要初始化一下他的属性,如果在类里面已经初始化好了,也可以不初始化,如:- fun main(args: Array<String>) {
- class People(var walk:String="走路",var talk:String="说话")
- var p=People()
- println(p.walk)
- println(p.talk)
- }
复制代码 以上两种输出结果都一样,为:
类里面也可以有方法,其实就是类里面的函数,如:
- fun main(args: Array<String>) {
- class People(var walk:String="走路",var talk:String="说话"){
- fun doHomework(){
- println("正在做家务")
- }
- }
- var p=People()
- p.doHomework()
- }
复制代码
输出结果为:
类也可以用于继承,比如聪明的电脑将来可以继承人类,人能干的活电脑也能干:
- fun main(args: Array<String>) {
- open class People(var walk:String="走路",var talk:String="说话"){
- fun doHomework(){
- println("正在做家务")
- }
- }
- class SmartComputer:People()
- var p=SmartComputer()
- p.doHomework()
- }
复制代码
不过类默认是不允许继承的,你要在前面加一个open关键字。输出结果为:
继承后还可以重写原来类的方法,比如:
- fun main(args: Array<String>) {
- open class People(var walk:String="走路",var talk:String="说话"){
- open fun doHomework(){
- println("正在做家务")
- }
- }
- class SmartComputer:People(){
- override fun doHomework(){
- println("我是电脑,我在帮主人做家务")
- }
- }
- var p=SmartComputer()
- p.doHomework()
- }
复制代码
被重写的那个方法也必须是open的才能被重写,输出结果为:
类跟函数一样,都可以使用泛型,如:
- fun main (args: Array<String>) {
- open class People<T> (var walk:T,var talk:T){
- open fun doHomework(){
- println("正在做家务")
- }
- }
- var p=People<String>("走路","说话")
- var f=People<Int>(1,2)
- println(p.walk)
- println(f.walk)
- }
复制代码
这里创建了两个对象p和f他们可以实体化不同类型的属性,输出结果为:
属性也可以在init代码块里初始化,如:- fun main (args: Array<String>) {
- class People(a:Int=1){
- var b:Int?= null
- init {
- b=a
- }
- }
- println(People().b)
- }
复制代码
输出结果为:
|
|