首页 > 其他分享 >多态

多态

时间:2024-03-16 23:00:12浏览次数:14  
标签:self 多态 back attack print def

多态

由于Python是动态类型的语言,它不需要特殊语法来实现多态,它天然支持多态。在Python中,多态意味着只要对象实现了正确的方法,就可以对它执行相应的操作。

# ### 多态: 不同的子类对象调用相同的父类方法,得到不同的执行结果
"""继承 重写 """

class Soldier():
	def attack(self):
		pass
		
	def back(self):
		pass
		
# 陆军
class Army(Soldier):
	def attack(self):
		print("[陆军]开坦克装甲部队,开大炮轰炸敌方根据地,拼刺刀,手撕鬼子")
		
	def back(self):
		print("[陆军]为了一条性命,夜行八百,日行一千,回家")
	
# 海军
class Navy(Soldier):
	def attack(self):
		print("[海军]开航空母舰,扔鱼叉,撒网捆住敌人,收网")
	
	def back(self):
		print("[海军]直接跳水,下海喂鱼,原地爆炸")

# 空军
class AirForce(Soldier):
	def attack(self):
		print("[空军]空对地投放原子弹,空对空发射巡航导弹")
	
	def back(self):
		print("[空军]直接跳机,落地成盒")
	
# 创建士兵
obj1 = Army()
obj2 = Navy()
obj3 = AirForce()

# 
lst = [obj1,obj2,obj3]
# lst = [Army(),Navy(),AirForce()]

strvar = """
将军请下令:
1.全体出击
2.全体撤退
3.海军上,其他兵种撤退
"""

num = input(strvar)
for i in lst:
	# print(i)
	if num == "1":
		i.attack()
	elif num == "2":
		i.back()
	elif num == "3":
		if isinstance(i,Navy):
			i.attack()
		else:
			i.back()
	else:
		print("风太大,小弟听不见")
		break

标签:self,多态,back,attack,print,def
From: https://www.cnblogs.com/wbcde116/p/18077838

相关文章

  • 滴水逆向笔记系列-c++总结2-36.权限控制-37.虚函数-38.多态_绑定
    第三十六课c++3权限控制1.定义和实现分开写2.private和publicprivate权限说明私有变量在类外是无法访问的,只有在类内或者使用类内函数访问类内函数访问3.private真的不能访问吗反汇编看看t对象在初始化public和private成员时都是一视同仁的,在底层还是没区别,都是编......
  • 详解c++多态中的析构与构造函数
    首先简单介绍一下多态。多态是面向对象编程中的概念,它允许我们使用基类类型的指针或引用来调用派生类对象的方法。C++中实现多态主要依靠虚函数和动态绑定。那怎么使用多态呢?基类指针或引用指向派生类对象。在我学习过程中,这些概念耳熟能详,但是为什么要有多态呢,先看下面这......
  • C++多态和虚函数
    C++多态和虚函数#include<iostream>usingnamespacestd;//基类PeopleclassPeople{public:People(char*name,intage);voiddisplay();protected:char*m_name;intm_age;};People::People(char*name,intage):m_name(name),m_age(age){}......
  • 多态性#java#面向对象
    多态性静态多态:也称为编译期间的多态,编译器在编译期间完成的,主要通过函数重载实现。编译器根据相同函数名的不同参数列表,可推断出要调用哪个函数。publicclassPerson{publicvoidsay(){System.out.println("我是第一个名为say的方法!");}publicvo......
  • 多态实际例子,接口实际例子
    //业务:订单需要支持多种支付方式。换句话:订单需要支持多种支付【方法】//订单里面需要通过【调用同一方法】但是要求有【不同表现形式】————怎么才能【调用同一方法】能够有【不同表现形式】?记住通过【不同的对象调用同一方法】就可以实现【不同表现形式】,这个对象是传进......
  • TS多态
    多态:【同一类型的对象具有不同的行为】或者说【同一类型的不同对象具有不同的行为】因为Stu与Teacher都实现了Person,所以他们的类型都可以设置为Person此时p1与p2都是同一类型的,但是p1,p2的调用相同方法,结果不一样多态:【同一类型的对象具有不同的行为】或者说【同一类型的不......
  • (持续更新)c++中的继承、封装、多态
    c++面向对象的三大特性为:继承、封装和多态c++认为万事万物都皆为对象,对象上有其属性和行为例如:人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌⋯车也可以作为对象,属性有轮胎、方向盘、车灯…行为有载人、放音乐、放空调…具有相同性......
  • C++ 多态
    原文多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。1#include<iostream>2usingnamespacestd;3classShape{4protected:5......
  • Java 继承与多态:代码重用与灵活性的巧妙结合
    Java继承(子类和超类)在Java中,可以从一个类继承属性和方法到另一个类。我们将“继承概念”分为两类:子类(child):从另一个类继承的类超类(parent):被继承的类要从一个类继承,使用extends关键字。示例:classVehicle{protectedStringbrand="Ford";//Vehicle属性......
  • 类学习笔记——【类的 封装、继承和多态】
    @目录封装、继承和多态类的封装类的继承源码:Giteehttps://gitee.com/drip123456/java-seGIthubhttps://github.com/Drip123456/JavaSE专栏:JavaSE笔记专栏封装、继承和多态封装、继承和多态是面向对象编程的三大特性。封装,把对象的属性和方法结合成一个独立的整体,隐藏......