TS中的多态

TS中的多态

概念:多态值得之父类型的引用指向了子类型的对象,不同类型的对象针对相同的方法,产生了不同的行为。

示例:

(()=>{
// 定义一个父类
class Animal {
	// 定义一个属性
	name:string
	// 定义一个构造函数
	constructor(name:string){
		this.name = name
	}
	// 定义方法
	sayRunDistance(distance:number = 0){
		console.log(`我跑了${distance}米!!!!!!`)
	}
}

//定义一个子类1
class Dog extends Animal {
	// 构造函数
	constructor (name:string) {
	// 调用父类的构造函数,实现子类中属性的初始化操作
		super(name)
	}
	// 实例方法,重写父类中的实例方法
	sayRunDistance(distance:number = 5) {
		console.log(`我跑了${distance}米!!!!!!`)
	}
}

//定义一个子类2
class Cat extends Animal {
	// 构造函数
	constructor (name:string) {
	// 调用父类的构造函数,实现子类中属性的初始化操作
		super(name)
	}
	// 实例方法,重写父类中的实例方法
	sayRunDistance(distance:number = 10) {
		console.log(`我跑了${distance}米!!!!!!`)
	}
}
// 实例化父类对象
const Animal = new Animal ('辛巴')
Animal.sayRunDistance()
// 实例化子类对象1
const Dog = new Dog('哈士奇')
Dog .sayRunDistance()
// 实例化子类对象2
const Cat = new Cat ('布偶猫')
Cat .sayRunDistance()
// 父类型和子类型的关系:父子关系,此时,父类类型创建子类的对象
const Dog1 :Animal = new Dog('金毛')
const Cat1 :Animal = new Cat('暹罗猫')
Dog1.sayRunDistance()
Cat1.sayRunDistance()
})
多态的作用:
// 定义一个函数,该函数需要的参数是Animal类型的
function showRun (ani:Animal){
	ani.sayRunDistance()
}
// 此时将Animal的子类作为参数传进去
showRun(Dog1)
showRun(Cat1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python多态是指同一个类的不同实例对象可以对相同的方法调用产生不同的行为结果。这是由于Python的动态类型和动态绑定机制所导致的。通过对对象进行类型检查或者在运行时进行动态分派,Python可以根据实际的对象类型来选择合适的方法实现。这种特性让代码更加灵活,并且可以根据不同的场景选择不同的行为。 一个简单的例子是使用内置函数len()在不同类型的数据上进行调用。在Python,len()函数可以被用于字符串、列表等多种类型的数据。当我们调用len("course")时,它返回的是字符串的长度6;而当我们调用len([10, 20, 30])时,它返回的是列表的长度3。这就是多态在Python的一种体现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python多态是什么_Python多态](https://blog.csdn.net/cunfen6312/article/details/107683261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [31. Python多态(Polymorphism)](https://blog.csdn.net/bai666ai/article/details/123029807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值