仓颉中的多态
·
一、多态的分类
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
}
运行结果
更多推荐



所有评论(0)