鱼C论坛

 找回密码
 立即注册
查看: 2661|回复: 0

[技术交流] kotlin编程基础之类与对象(三)

[复制链接]
发表于 2017-11-20 07:41:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
陪伴对象也可以加个名字,例如:
  1. fun main(args: Array<String>) {
  2.     O.Orientation.left()
  3.     O.left()
  4. }

  5. class O{
  6.     companion object Orientation{
  7.         fun left(){
  8.             println("Take a left")
  9.         }
  10.     }
  11. }
复制代码

使用两种方式调用都可以,输出结果为:
Take a left
Take a left

陪伴对象还可以有扩展方法:
  1. fun main(args: Array<String>) {
  2.     fun O.Orientation.right(){
  3.         println("Take a right")
  4.     }
  5.     O.right()
  6. }

  7. class O{
  8.     companion object Orientation{
  9.         fun left(){
  10.             println("Take a left")
  11.         }
  12.     }
  13. }
复制代码

就是在外面自己定义一个方法,在普通函数跟类的普通方法也可以这么做,我就不举例了。输出结果为:
Take a right


下面介绍下不创建类直接创建对象的方法:
  1. fun main(args: Array<String>) {
  2.    A.a()
  3. }
  4. object A{
  5.     fun a(){
  6.         print("我只是个对象")
  7.     }
  8. }
复制代码

这也称作单例,创建了直接使用就可以了,非常方便,输出结果为:
我只是个对象


还有一种类的形式叫数据类:
  1. fun main(args: Array<String>) {
  2.    var o=Orientation("left","right","front","behind")
  3.     print(o)
  4. }
  5. data class Orientation(val left:String,val right:String,val front:String,val behind:String)
复制代码

其实就是专门存储临时数据用的,有点像javabean,输出结果:
Orientation(left=left, right=right, front=front, behind=behind)

还有一种叫枚举类:
  1. fun main(args: Array<String>) {
  2.    var o= Orientation.LEFT
  3.     when(o){
  4.         Orientation.LEFT-> print("我在左边")
  5.         Orientation.RIGHT-> print("我在右边")
  6.         Orientation.FRONT-> print("我在前边")
  7.         Orientation.BEHIND-> print("我在后边")
  8.     }
  9. }
  10. enum class Orientation{
  11.     LEFT,RIGHT,FRONT,BEHIND
  12. }
复制代码

有了这种简便的方法,你就可以通过改变o的值来制作流程,输出结果为:
我在左边


还有一种内部类的写法:
  1. fun main(args: Array<String>) {
  2.    val a=Outer().Inner().getA()
  3.     print(a)
  4. }
  5. class Outer{
  6.     val a=1
  7.     inner class Inner{
  8.         fun getA():Int{
  9.             return a
  10.         }
  11.     }
  12. }
复制代码

使用内部类可以直接访问外部类的属性,输出结果为:
1

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 06:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表