Kotlin 基本语法---2.Kotlin 的类与对象初步

上一篇:Kotlin 基本语法---1.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)
}

要注意的是:

  • 初始化一个类写法和 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)
}

上一篇:Kotlin 基本语法---1.Kotlin 的基本类型

下一篇:Kotlin 基本语法---3.Kotlin 的空安全类型

猜你喜欢

转载自blog.csdn.net/wuqingsen1/article/details/83001419
今日推荐