Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift中的多态性(如果没有)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 swift中有这个代码:解释多态的想法!

//Polymorphism


class Person {
var name:string="Guest"
var age:Int=0

init(name:string) {
    self.name=name
    self.age=0
}
init(name:string,age:int) {
    self.name=name
    self.age=age
}

func update(name:string) {
    self.name=name
}
func Upgrade() {
    self.age++
}
}



class student:Person
{
var average:Float=100
func IsOk()->Bool {
    return average > 80
}
init(name:string,average:Float) {
    super.init(name: Name)
    self.average=average
}
}


class Teacher:Person {
var Salary:Float=2000
init(name:string,age:Int,Salary:Float){
    super.init(name: name,age: agE)
    self.Salary=Salary

}
func GetNetSalary()->Float {
    return 0.8*self.Salary
}

override func Upgrade() {
    super.Upgrade()
    Salary*=1.1 // add 10% to salary
}
}



var t1:Teacher=Teacher(name: "Ahmed",age: 28,Salary: 3000)
var st1=student(name:"Test",average: 70)

var p1:Person=Person(name: "abc")
var p2:Person=student(name: "student1",average: 100) //up casTing
var p3:Person=Teacher(name: "Teacher",age: 40,Salary: 3008)


var arr=[t1,st1,p1,p2,p3] //array of persons and teachers and students

for instance in arr {
if instance is student {println("This is student")}
if instance is Teacher {println("This is teacehr")}  
}

在for循环的最后我怎么能把这样的条件看看数组中的元素是否只是一个Person?
因为当我输入:

if instance is Person {println("This is a Person")}

这给了我一个错误,因为这个条件总是正确的!

解决方法

EDITED

你在问:

在强大的静态类型语言中,您无法访问对象的运行时类型,您无法执行此操作.但是,在Swift中,您可以通过dynamicType方法使用该语言的自反属性获取此类型.

大佬总结

以上是大佬教程为你收集整理的Swift中的多态性(如果没有)全部内容,希望文章能够帮你解决Swift中的多态性(如果没有)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。