面向对象(二):类的继承
2020-06-28 05:27
731 查看
类的继承
继承的基本语法:
class ClassName(baseclasslist):
‘’‘类的帮助信息’’’
statement #类体
案例1:创建水果基类及其派生类
# 创建水果基类及其派生类 class Fruit: '''水果类''' color="绿色" #定义类属性 def harvest(self,color):#定义方法。 print('我成熟之前是:',Fruit.color,'的!') #输出类属性 print('我成熟了,丰收了...') print('我变成:',color,'的!\n')#输出形式参数color ## 水果基类创建完成。 class Apple(Fruit):#创建苹果类,继承自父类“Fruit” color='红色' #苹果成熟了是红色的 def __init__(self): print('我是苹果') class Banana(Fruit):#创建香蕉类,继承自父类“Fruit” color='黄色' #香蕉成熟了是黄色的 def __init__(self): print('我是香蕉') apple=Apple() #创建苹果类的一个实例 apple.harvest(apple.color) #调用基类的harvest()方法 banana=Banana() #创建香蕉类的一个实例 banana.harvest(banana.color) #调用基类的harvest()方法
运行结果为:
我是苹果 我成熟之前是: 绿色 的! 我成熟了,丰收了... 我变成: 红色 的! 我是香蕉 我成熟之前是: 绿色 的! 我成熟了,丰收了... 我变成: 黄色 的!
根据本案例,我们可以看出,当一个子类继承了某个父类(基类)后,也就继承了这个父类的实例方法和类属性。
再来看一个例子,例子的原型来自(Crossin的编程教室)。让大家感受下继承的魅力。
案例:小明和小红相约去归元寺游玩,小明家距离归元寺30公里,他打算骑自行车前往,车速为15公里每小时。小红家距离归元寺100公里,打算开车前往,车速为60公里每小时,每公里油耗为0.013升。求:小明和小红各自到达归元寺的时间,小红的汽车油耗。
分析:自行车和汽车有着相同的属性:速度(speed),还有一个相同的方法:(drive)来输出行驶或骑行一段距离所花的时间。此外,对汽车需要增加一个属性:每公里油耗(fuel),因此对汽车的分析,除了要输出行驶时间外,还要输出油耗。
因此,构造一个基类(Vehicle),表示某种车,它包含了自行车和汽车共同的属性即速度(speed)和共同的方法(drive)。然后,让汽车类(Car)和自行车类(Bike)都继承这个基类(Vehicle),即作为它的子类。在每个子类中,可以分别添加各自独有的属性。
class Vehicle:#创建车类,即创建基类 def __init__(self,speed): self.speed=speed #创建属性(speed) def drive(self,distance): #定义方法(行驶时间drive) print('我到归元寺需要 %.2f 小时.\n'%(distance/self.speed)) class Bike(Vehicle):#创建自行车类,继承自父类“Vehicle” pass #Bike类的属性和方法在Vehicle类中都有,不需要额外的功能,用pass语句保留空块。 class Car(Vehicle):#创建汽车类,,继承自父类“Vehicle” def __init__(self,speed,fuel): Vehicle.__init__(self,speed) self.fuel=fuel #创建属性(fuel) def drive(self,distance): #定义方法(drive) Vehicle.drive(self,distance) #继承父类(Vehicle)的方法(drive) print('我到归元寺耗用了 %.2f 升的汽油.\n'%(distance*self.fuel)) print('我是小明') bike=Bike(15)#创建自行车类的一个实例,速度为15 bike.drive(30)#调用方法 print('我是小红') car=Car(60,0.013)#创建汽车类的一个实例,速度为60,油耗为0.013 car.drive(100)
运行结果为:
我是小明 我到归元寺需要 2.00 小时. 我是小红 我到归元寺需要 1.67 小时. 我到归元寺耗用了 1.30 升的汽油
相关文章推荐
- 面向对象4---继承
- objective-c(八)-面向对象之继承
- 面向对象的Javascript(5):继承
- 天轰穿C# -vs2010 - 04面向对象的编程之实现继承【原创】
- JAVA基础(七)面向对象2继承相关
- JavaSE实战——面向对象(上) 封装,继承,对象初始化流程,单例设计模式
- 面向对象的三个基本特征是:封装、继承、多态
- 黑马程序员—java技术blog—第五篇面向对象_继承概述及基础应用
- Python面向对象——继承 实例
- JavaScript高级程序设计之面向对象的程序设计之继承之原型式继承第6.3.4讲笔记
- JS面向对象 - 构造函数 - 继承
- 面向对象C++——继承
- Java面向对象:封装、继承、多态
- java技术积累(转载)-面向对象的特征抽象、继承、封装、多态
- js面向对象与继承
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 面向对象的三大特征(封装、继承、多态)
- 面向对象-封装、继承、多态
- 面向对象的基本特征是什么?什么是封装、继承、多态?
- 黑马程序员------毕老师视频笔记第七天------面向对象(继承)