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