一、多态的分类

        1、编译时多态

        又称方法重载(在一个类中方法名相同,参数个数或列表不同),在一个类中通过参数决定调用哪个方法。

        2、运行时多态 

        又称方法重写,在继承关系中中方法名、参数列表、返回值相同,方法不同。 

二、多态的代码实现

1、编译时多态

public func exc1 (a : Int64){
    println("调用方程一")
}

public func exc1(a : String){
    println("调用方程二")
}

main(): Int64{
    //通过参数决定调用哪个方法
    exc1(1)

    exc1("a")
    
    return 0

}

运行结果

 2、运行时多态

        (1)动态绑定


public open class f1{

    public open func writing() : Unit{

        println("此时为父类")

    }

}

public  class s1 <: f1{

    public override func writing() : Unit{

        println("此时为子类一")

    }

}

public  class s2 <: f1{

    public override func writing() : Unit{

        println("此时为子类二")

    }

}
//此时可以动态绑定函数,可以自己选择绑定的对象
public func exc1(){
    var  f : f1 = f1() 
    f.writing()
    var s1 : s1 = s1()
    s1.writing()
    var s2 : s2 = s2()
    s2.writing()
}

public func exc(f : f1){

    f.writing()

}

(2)强耦合 


//此时为强耦合
public func exc1(){
    exc(f1())
    exc(s1())
    exc(s2())
}

public func exc(f : f1){

    f.writing()

}
main(): Int64{

    exc1()
    
    return 0

}

运行结果

  

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐