面向对象三大特性

面向对象编程有三大特性,分别为封装继承多态。这篇博客主要是讲这三大特性。

1、封装

封装很容易理解,就是把类中的方法隐藏起来,我们不需要关注类中的方法是怎么写的,我们只需要知道怎么去调用类的方法就可以了。像现在网站有很多的这种API接口,我们用这些api接口可以很方便的实现我们想要的功能,比如查询天气等等,但是这种api接口内部的代码是怎样的,我们肯定是不知道的,我们只知道API的名字以及所需要的参数,这种就是封装。

python把面向对象发挥到了极致,一切皆对象并不是说说而已,前面所说的数据类型——字符串、列表等等,实际上也是对象,这些对象并不需要我们去自定义类,python已经黑我们内置好了。

2、继承

面向对象的编程语言支持在已有类的基础上创建新类,从而减少重复代码的编写。提供继承信息的类叫做父类(超类、基类),得到继承信息的类叫做子类(派生类、衍生类),这就是继承,继承指的是事物之间的所属关系,在python中,每一个类默认都会继承object这个父类。继承只能继承公有的不能继承私有的属性或方法。

举个例子,我们定义狗和猫两个类,我们会发现这两个类有些行为是一样的,而这些一样的行为都是作为狗和猫的公共属性或行为,这个时候,我们可以先定义动物这个类,然后再定义狗和猫,并且继承动物类,这些公共属性或行为是属于动物这个类的。

class Animal(object):  
	'''父类'''
	def __init__(self,name):
		self.name=name

	def eat(self):
		print(f"{self.name}在吃饭")
	def sleep(self):
 		print(f"{self.name}在睡觉")

class Dog(Animal):  #继承Animal类
	'''子类'''  
	def __init__(self,name,color):
		super().__init__(name)  # 调用父类的初始化方法
		self.color=color

	def shout(self):
 		print(f"{self.name}在大叫")

class Cat(Animal):
	'''子类'''   
	def catch(self):
		print("抓")

dog1=Dog('dog1','白色')
dog1.eat()  # 使用父类的公共方法
cat1=Cat('cat1')
cat1.sleep()

继承的语法是在定义类的时候,在类名后的圆括号中指定当前类的父类。如果定义一个类的时候没有指定它的父类是谁,那么默认的父类是object类。object类是Python中的顶级类,这也就意味着所有的类都是它的子类,要么直接继承它,要么间接继承它。Python语言允许多重继承,也就是说一个类可以有一个或多个父类。在子类的初始化方法中,我们可以通过super().__init__()来调用父类初始化方法。子类继承父类的方法后,还可以对方法进行重写(重新实现该方法),不同的子类可以对父类的同一个方法给出不同的实现版本。

class Person:
	def __init__(self,name,age):
		self.name=name
		self.age=age
	
	def say_hello(self):
		print(f'hello,我是{self.name}')

class Student(Person):
	def say_hello(self): #重写父类的方法
		print(f'hello,我是高一学生{self.name}')

s1=Student('小红',20)
s1.say_hello()
3、多态

多态是指同一个方法调用由于对象不同可能会产生不同的行为。重写父类的方法会表现出多态行为,调用相同的方法,做了不同的事情。所以多态的存在有2个必要条件:继承、方法重写。
我的博客:https://blog.z7sz.top

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xingyuzhongxuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值