Kotlin实战感悟(换地方拧螺丝了)

本文详细介绍了Kotlin的修饰符,如可见性、vararg、var与val的区别,以及out关键字、枚举和控制语句。还讨论了对象、类型检查、字符串操作、集合与函数的使用,包括lambda表达式、高阶函数、扩展函数和Android中的应用。此外,还涉及了异常处理、运算符重载等高级话题。
摘要由CSDN通过智能技术生成

kotlin

修饰符

可见性修饰符

类成员 顶层声明
public 默认可见性 所有地方可见 所有地方可见
private 类中可见 文件中可见
protected 子类中可见
internal 模块中可见 模块中可见

子类可重写的条件

  • 父类中被open的方法
  • 子类继承了抽象类,抽象方法必须被重写
  • 子类继承的父类里的override方法

vararg 用来表示多个参数,类似于java中…

fun test(vararg tags: String) {
   
    println(tags[0])
    var list = listOf(*tags)
    println(list)
}

var 与val的区别

区别
var private
val private final

out 关键字

枚举

enum class TimeTypeEnum(val value: String) {
   
    LATESTWEEK("1"),
    LATESTMONTH("2"),
    LATESTYEAR("3")
}

until [0 x)

        for(key in 0 until normal_praise){
   
            LogUtil.d("=====key===${
     key}")
        }

Any

    var flag:Any="ddd"
     Object flag = "ddd";
  • Any是所有类型的超类型,是所有类型的根,包括基本数据类型

const 的作用

默认java调用kt的静态属性是需要调用getXX()的

     Cat.Companion.getAge()   //访问Cat.kt 文件的age属性

用 const 修饰后 相当于以 public staic final 的属性直接暴露给java

      Cat.age

? 表示该引用可以为null

!! 非空,如果标记的变量是null会直接报错

    val  str:String?=null
    println(str.toString()) //打印null
    println(str!!.toString()) //会报错,此时断言str不为null

as

final

open 关键字

  • 用来修饰父类以及父类中需要被重写的方法甚至是属性
  • java中的类和方法默认都是open,但kt里都是final
  • 子类中重写的方法可以显示的用final标注,从而使继承该子类的类不再重写该方法
  • 抽象类中抽象方法和抽象属性都是默认open的,而实现的方法和属性都是final,要想重写必须手动添加open

object

  • 接口中可以写方法的实现
  • 单继承,多接口实现
interface CallBack {
   
    fun callBack(str: String)
    fun getTest(){
   
        println("调用了接口里的方法")
    }
}

abstract

companion object

  • 需要在类中定义静态方法或者静态变量 (也就是android中的工具类或者一些常量)
class Cat {
   
    companion object {
   
        var name:String="hcy"
        fun  getName(){
   
            println(name)
        }
    }
}

object 修饰的类

  • 静态类
  • 单例
  • 方法和变量都是静态的
object Dog {
   
    var name:String?=null
    val age:Int=10
    fun  play(){
   
        println("playing!!!!")
    }
}
public final class Dog {
   
   @Nullable
   private static String name;
   private static final int age = 10;
   public static final Dog INSTANCE;

   @Nullable
   public final String getName() {
   
      return name;
   }

   public final void setName(@Nullable String var1) {
   
      name = var1;
   }

   public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值