Kotlin学习(3)类

声明类和接口:

//
class A{ }

//接口,接口中的方法可以有默认实现
interface B{ 
    fun show(){ print("i'm B")  }
}

//用冒号代替extends和implements,可以实现多个接口,只能继承一个类
class C:A,B{ }

//带参数且有继承的类,参数如果带val,即这个参数在类中默认被初始化,如果不带,这个参数需要在类中自己初始化
class D(val d:Int):A{ }
class D(_d:Int){ private val d=_d }
//从构造方法
class D{ constructor(d:Int){ //..... } }
//带默认参数的类 
class E(val e:Int=5){ fun re(){ println(e)} } 
>>>E(6).re() 
//打印6 
>>>E(5).re() 
//打印5 
>>>E().re() 
//打印5 

//继承的接口拥有同名方法,如F/G接口都有show()方法,则必须重写这个方法,或者指定用哪一个接口方法 
class H:F,G{ 
    override fun show(){ 
        //下面的写法会同时调用f和g的show方法 
        super<F>.show() 
        super<G>.show() 
    } 
}

//抽象类
abstract class I{
    //抽象函数,没有实现方法,必须被子类重写
    abstract fun i()
    
    //抽象类中的方法默认是open的,但也可以标注
    open fun i2(){  }
}

 


 

类中访问修饰符:

修饰符相关成员评注
final不能被重写类中成员默认使用
open可以被重写需要明确的表明
abstract必须被重写只能在抽象类中使用;抽象成员不能有实现
override重写父类或接口中的成员如果没有使用final表明,重写的成员默认是open的

 


 

可见性修饰符:

修饰符类成员顶层声明
public(默认) 所有地方可见所有地方可见
internal模块中可见模块中可见
protected子类中可见-----
private类中可见文件中可见

 


getter和setter:

  可以自定义gtter和setter方法,在每次设置和得到属性之前做一些操作

//每次set都会输出11111
class A{
    vae a:String="aaaa"
          set(value:String){
                 println("11111")
                 a=value
          }  
}

 


 

数据类:

   data class Client(val name:String, val postalCode:Int) ,这行代码生成了一个数据类。这个类会自动生成equals()  toString()  HashCode() 等方法。


 

Object关键字:

  这个关键字定义一个类并同时创建一个实例。也就是说,当你定义了这个类,它就已经被声明了。

  可以用来创建单例。(单例和顶层函数都是为了可以全局访问,单例的好处是可以继承或实现一些类或接口,可以子类重写方法等)

Object A(){
    val a1="aaa"
    fun a2(){
          pintln("aaaaaaa")
    }
}

//不用A(),  A()实际上相当于Java中new了一个新的对象
>>>A.a1
>>>A.a2()

 


 

伴生对象:工厂方法:

  Kotlin中并没有static关键字,而是使用顶层函数来使函数被全局访问。但是顶层函数不能访问类的private属性。为了解决这个问题,可以使用工厂方法来替代static。

class A{
    companion object(){
          fun bar(){
                 println("it is companion object")
          }
    }
}

>>>A.bar()
it is companion object

 

转载于:https://www.cnblogs.com/liumaowu/p/9401445.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值