【Python面向对象】封装、继承、多态

面向对象有三个基本特征,分别是封装、继承和多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用/调用!本文将利用Python语言进行简单举例,以帮助大家更好地理解这三个特征。

目录

一、面向过程和面向对象

二、封装

1.未封装的用户登录

2.封装后的用户登录

三、继承

四、多态

总结


一、面向过程和面向对象

面向过程是分析出解决问题所需要的步骤,然后用一些函数把这些步骤一步步实现,使用的时候依次调用函数(开火→炒菜→洗碗)👇;

面向对象是把构成问题的事务分解成各个对象,建立对象来描述某个事务在解决问题的步骤中的行为(开火、炒菜、洗碗)👇,按功能将对象(万物皆可对象)进行划分,确定对象的属性和行为,之后方便调用也更为灵活。

二、封装

封装是为了提高代码的复用性和可维护性,把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块。

把一台洗衣机看做洗衣机类的一个实例,洗衣机里有标准洗、速洗、精洗、桶干燥、洁桶等多种功能。 作为用户不需要知道这些功能内部的具体实现,需要某项功能只要选择对应的功能键即可。这就是洗衣 机封装了以上多种功能。

例如:完成一个登录需要三个步骤,比如我把输入用户名、输入密码、点击登录三段代码写成一 个函数,那么这个函数就是登录功能的封装。我们在下次需要用到登录的时候,不需要重复写那三段代 码,而只需要调用登录函数即可。

1.未封装的用户登录:

大家可以看到,实现两个用户的登录就需要很多代码,重复率较高,假如是三个甚至更多用户则需要海量的代码,因此需要封装操作。

#通过输入输出模拟用户登录
#登录1(用户:xiaoming)
user = 'xiaoming'
psw = '123456'
print('请输入用户名:',user)
print('请输入密码:',psw )
print('点击登录按钮!')
print('登录成功!')
#登录2(用户:xiaohong)
user = 'xiaohong'
psw = '1234567'
print('请输入用户名:',user)
print('请输入密码:',psw )
print('点击登录按钮!')
print('登录成功!')

运行结果:

2.封装后的用户登录

首先在login.文件封装一个用户登录方法,一般是定义类后再定义函数,然后就可以在该项目的其他py文件中直接调用该函数,调用时填入user和psw两参数的值即可,十分方便快捷!

#login.py文件
class Login():
#类:信息封装的基础
    def user_login(self,user,psw):
        #封装用户登录方法,方便调用
        print('请输入用户名:', user)
        print('请输入密码:', psw)
        print('点击登录按钮!')
        print('登录成功!')
#testcase.py文件,调用login.py文件的Login类
from login import Login

lg = Login() #实例化,必要的操作
lg.user_login('xiaoming','123456')#调用类中的函数并使用
lg.user_login('xiaohong','1234567')

运行结果:

三、继承

简单来说继承是类与类的一种关系,子类与父类的关系,子类继承父类的属性与方法(类就是继承中的class)。

例如:猫属于动物,猫类继承于动物类,猫类就是子类,动物类是父类

动物类具备吃的方法,那么猫类能够继承动物类的吃方法,能够在猫类中调用吃方法。

class Animal():#定义动物类,动物都会吃
    def eat(self):
        print('会吃')
class Cat(Animal):#定义猫类,同时继承动物类,猫会喵喵
    def miao(self):
        print('会喵喵')
c = Cat()#实例化
c.miao()
c.eat()#继承Animal父类的eat方法

运行结果:

四、多态

不同的子类调用相同的方法,产生不同的结果,前提是继承,多态的关注在于对象的行为和属性而非类型。

例如:猫和狗都属于动物,都具有叫声这个方法,但是猫和狗的叫声实际上是不一样的,这时我们往往是定义成一样名称的功能但是功能的类型不一样

查看运行结果可知,虽然都调用了talk方法,但是输出结果是不一样的,可知会调用自家的方法(虽然都是talk方法)并出产生不同的结果;同时需要注意一个点,假如父类(Animal)和子类(Cat、Dog)同时存在talk方法,那么调用时也只以子类中的方法为准(方法名称相同时)。

class Animal: #定义动物类,动物都会发声
    def talk(self):
        print('呜呜')
class Cat(Animal):#定义猫类,同时继承动物类,猫会喵喵
    def talk(self):
        print('会喵喵')
class Dog(Animal):#定义狗类,同时继承动物类,猫会汪汪
    def talk(self):
        print('会汪汪')
        
c = Cat()#实例化猫类
c.talk()#调用猫类的talk方法
d = Dog()#实例化狗类
d.talk()#调用狗类的talk方法

运行结果:


总结

大家如果有疑问都可以评论提出,有不足之处请大家批评指正,希望能多结识这方面的朋友,共同学习、共同进步。

  • 14
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python是一门面向对象的编程语言,它支持封装继承多态封装是指将数据和行为封装在一个类中,对外部隐藏实现细节,只保留接口。Python通过使用双下划线“__”来实现类的私有属性和方法。 继承是指一个子类可以继承父类的属性和方法,并且可以自己添加新的属性和方法。Python中使用类名后面的括号指定父类,子类会自动继承父类的所有属性和方法。 多态是指同一个方法在不同的子类中具有不同的实现方式。Python中的多态是通过方法重写(覆盖)实现的。子类可以重写父类的方法,并且可以在子类中调用父类的同名方法。 下面是一个简单的Python类的示例,展示了封装继承多态的用法: ```python # 定义一个Animal类 class Animal: def __init__(self, name): self.name = name def speak(self): pass # 定义一个Dog类,继承Animal类 class Dog(Animal): def speak(self): return "Woof!" # 定义一个Cat类,继承Animal类 class Cat(Animal): def speak(self): return "Meow!" # 创建一个Dog对象和一个Cat对象 dog = Dog("Rufus") cat = Cat("Fluffy") # 调用它们的speak()方法,输出不同的结果 print(dog.speak()) # 输出:Woof! print(cat.speak()) # 输出:Meow! ``` 在这个示例中,Animal类封装了一个名称属性和一个空的speak()方法,子类Dog和Cat继承了Animal类,并重写了speak()方法以实现多态。最后创建了一个Dog对象和一个Cat对象,分别调用它们的speak()方法,输出不同的结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尹煜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值