尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

面向对象编程三大特性:封装、继承、多态

面向对象编程三大特性:封装、继承、多态 在面向对象编程里, 针对类存在三大核心特性, 它们分别是封装, 还有继承以及那多态, 本文对此进行了详细介绍, 借助着生活实例与代码演示, 把各特性的核心思想给阐述了出来, 同时也说明了其实现目的, 还有应用场景, 以此来帮助理解怎样借助类设计达成数据安全, 以及代码复用, 进而实现灵活扩展。面向对象编程思想具备三大特性, 分别是封装, 还有继承, 以及多态, 可以借由类来达成这三个特点。一、封装1、核心思想隐藏对象的内部实现细节仅对外提供公开的访问接口。生活里头到处都能瞧见封装的实例, 比如说, 电脑把主板封装于机箱当中, 将内部的布线细节给隐匿起来了, 然而却对外给出了USB口、HDMI口、充电口、耳机插口等去访问主板的接口。类的封装也是这种道理。2、封装的目的示例代码规定一个类别, 对账户余额予以封装, 此为私有属性, 并且借助公共方法去提供访问以及修改的接口功能。class BankAccount: def __init__(self, initial_balance): self.__balance initial_balance # 私有属性使用双下划线前缀隐藏 def deposit(self, amount): 存款方法封装余额修改逻辑 if amount 0: self.__balance amount return f存款成功余额: {self.__balance} return 存款金额必须大于0 def withdraw(self, amount): 取款方法封装余额修改逻辑 if 0 amount self.__balance: self.__balance - amount return f取款成功余额: {self.__balance} return 取款失败金额无效或余额不足 def get_balance(self): 获取余额的公共接口 return self.__balance # 使用示例 account BankAccount(1000) print(account.deposit(500)) # 输出: 存款成功余额: 1500 print(account.withdraw(200)) # 输出: 取款成功余额: 1300 print(account.get_balance()) # 输出: 1300 # 直接访问私有属性会报错: print(account.__balance) # AttributeError说明二、继承1、核心思想一类别该类别为子类或者说是派生类能够获取另外一类别此类别是父类也就是基类的属性以及方法, 并且能够对它们予以扩展或者进行重写。不妨从生物学的角度去理解继承, 就像山羊具备羊角这种特性, 如此一来, 山羊的子代同样会继承父辈的这般特性。在编程领域里, 当子类继承父类之时, 父类所拥有的方法以及属性恰似羊角, 子类也会予以继承。2、继承的目的示例代码给出一个通用类, 对其进行定义, 之后创建更具特定性质的 Dog 类, 再创建同样有着各自特性的 Cat 类, 让它们进行继承。class Animal: def __init__(self, name): self.name name def speak(self): # 父类的方法通常设计为被重写 # 或者可以抛出异常raise NotImplementedError(“子类必须实现此方法”) print(f{self.name} 发出了声音。) def eat(self): print(f{self.name} 正在吃东西。) # Dog 类继承自 Animal 类 class Dog(Animal): # 可以重写父类的方法 def speak(self): print(f{self.name} 说旺旺) # 子类可以扩展自己的方法 def fetch(self): print(f{self.name} 正在追球。) # Cat 类也继承自 Animal 类 class Cat(Animal): def speak(self): print(f{self.name} 说喵喵) def climb(self): print(f{self.name} 正在爬树。) # 使用继承 my_dog Dog(Buddy) my_cat Cat(Whiskers) # 子类可以使用父类的方法 my_dog.eat() # 输出Buddy 正在吃东西。来自Animal类 my_cat.eat() # 输出Whiskers 正在吃东西。来自Animal类 # 子类重写了父类的方法调用的是子类自己的版本 my_dog.speak() # 输出Buddy 说旺旺来自Dog类 my_cat.speak() # 输出Whiskers 说喵喵来自Cat类 # 子类可以使用自己扩展的方法 my_dog.fetch() # 输出Buddy 正在追球。 my_cat.climb() # 输出Whiskers 正在爬树。说明三、多态1、核心思想多态是什么呢, 多就是具有多种, 态就是形态这个意思。它所指的是, 不同类别的对象, 针对同一方法的情况, 能够有不一样的响应。要说多态是什么, 就是这样的情况: 父类里有个特定的方法, 它能够被好多不一样的子类继承, 这些子类, 又能够针对父类里的这个方法进行重新编写, 通过这样的方式, 使得每个子类呈现出不一样的样子, 这就是多态。按照生物学的观念去领会多态, 是这样的情况呢: 一条龙生下了九个孩子, 这九个孩子相互之间都不一样。这九条龙全都继承了来自同一个父体的基因, 这在编程语言中所对应的就是好多不同的子层级去传承同一个父层级的方式。可是, 它们却显露出不一样的形态, 这在编程语言里对应的就是每一个子层级所继承的同一个方式有着不一样的输出。2、多态的目的示例代码将一个公共接口进行定义, 这个接口是(), 有多个相异行为的叫做类的东西, 像Dog 、Cat这些, 对该接口予以实现。class Animal: def make_sound(self): print(动物发出声音) class Dog(Animal): # 继承Animal类 def make_sound(self): # 重写make_sound方法 print(汪汪) class Cat(Animal): # 继承Animal类 def make_sound(self): # 重写make_sound方法 print(喵喵) # 创建对象 animal Animal() dog Dog() cat Cat() # 调用方法 animal.make_sound() # 输出: 动物发出声音 dog.make_sound() # 输出: 汪汪 cat.make_sound() # 输出: 喵喵
返回列表