Python 面向对象编程 继承 和多态
2014-04-18 21:17
585 查看
Python 面向对象编程 继承 和多态
一:多继承性
对于java我们熟悉的是一个类只能继承一个父类;但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲
格式: class 子类(父类1,父类2...):
如代码:我们创建 人类,课程类,学生类继承人类,大学生类继承学生类和课程类,也就是说大学生类,有 学生类,课程类,人类等特性;
二:Python 多态
通常我们认为继承也是多态的和种,在java中的 接口和实现,在OC中的协议,这是一些对类的多态形式,那么 Python中有像Java那样的接口和实现,及OC中的分类,扩展等多态形式吗?,答案目前我认为是没有的,因为Python是一种弱类型的,解析型语言,但是一些不太容易看出来的多态形式,我们可以看下下面代码
上面Person对象有个driveCar方法,传参数为一辆汽车,由于我们不知道汽车是什么 牌子的,所以这里是多态,什么车,执行什么车的方法,但是不是所有的车都能试驾,比如玩具车,哈哈
关于Pthon的多态,我们不必太过于纠结,看上面Pthon的设计之美,给人一种清爽的感觉!
一:多继承性
对于java我们熟悉的是一个类只能继承一个父类;但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲
格式: class 子类(父类1,父类2...):
如代码:我们创建 人类,课程类,学生类继承人类,大学生类继承学生类和课程类,也就是说大学生类,有 学生类,课程类,人类等特性;
# python 多继承 class Person: #声明人类 def __init__(self, name, age): self.name = name self.age = age print('create people:', name, age) p1 = Person('Jerry',13) #输出: # # create people: Jerry 13 class Student(Person): #学生类 def __init__(self,name,age,school): Person.__init__(self,name,age) #先调用父类的初始化方法 self.school = school print("his School is",school) stu1 = Student('Tom',20,"Beijing") ##输出 # create people: Tom 20 # his School is Beijing class Course: #创建课程类 def __init__(self,course): self.course = course print('has the course ',course) cus1 = Course('Python') ##输出 # has the course Python class College(Student,Course): #创建大学生类,继承学生类,课程类 def __init__(self,name,age,school,course,depart): Student.__init__(self,name,age,school) #同样先初始化父类方法 Course.__init__(self,course) self.depart = depart; print("the college depart is",depart) college1 = College("小明",18,"清华大学",'在学习Python','专业网络工程') ## 输出结果 # create people: 小明 18 # his School is 清华大学 # has the course 在学习Python # the college depart is 专业网络工程
二:Python 多态
通常我们认为继承也是多态的和种,在java中的 接口和实现,在OC中的协议,这是一些对类的多态形式,那么 Python中有像Java那样的接口和实现,及OC中的分类,扩展等多态形式吗?,答案目前我认为是没有的,因为Python是一种弱类型的,解析型语言,但是一些不太容易看出来的多态形式,我们可以看下下面代码
class BMWCar: #宝马汽车类 def __init__(self): print("买辆宝马汽车") def drive(self): #汽车有行驶的方法 print('试驾BMW') class BenzCar: #奔驰汽车类 def __init__(self): print('买了辆奔驰汽车') def drive(self): print('试驾奔驰') class TeslaCar: #特斯拉汽车,未在国内上市,不提供试驾 def __init__(self): print('该汽车还没上市') #买不到该汽车 class Person: #人类 def driveCar(self,car): #试驾汽车 car.drive() #让人去试驾汽车 #买车 bmw = BMWCar() benzi = BenzCar() tesla= TeslaCar() #试驾 onePerson = Person() onePerson.driveCar(bmw) onePerson.driveCar(benzi) onePerson.driveCar(tesla) ##输出结果 # 买辆宝马汽车 # 买了辆奔驰汽车 # 该汽车还没上市 # 试驾BMW # 试驾奔驰 #可以看到上述结果,宝马、奔驰都能试驾;特斯拉不能试驾
上面Person对象有个driveCar方法,传参数为一辆汽车,由于我们不知道汽车是什么 牌子的,所以这里是多态,什么车,执行什么车的方法,但是不是所有的车都能试驾,比如玩具车,哈哈
关于Pthon的多态,我们不必太过于纠结,看上面Pthon的设计之美,给人一种清爽的感觉!
相关文章推荐
- Python 面向对象编程(三)继承与多态
- Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装
- Python之面向对象编程:封装、继承、多态
- Python面向对象编程之继承与多态详解
- Python 面向对象编程――继承和多态
- Python面向对象编程之继承与多态详解
- Python面向对象编程(类和实例 访问限制 继承和多态 获取对象信息 实例属性和类属性)
- 【Python】[面向对象编程] 访问限制,继承和多态
- 【Python学习笔记】面向对象编程:继承和多态
- Python 进阶_OOP 面向对象编程_类和继承
- 对于Python面向对象部分的理解(封装继承多态等等)
- Python(面向对象编程——继承、派生、组合、抽象类)
- Python的继承和多态
- 面向对象编程——继承和多态(四)
- Python3 与 C# 面向对象之~继承与多态
- 洗礼灵魂,修炼python(34)--面向对象编程(4)—继承
- Python基础(6)- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)
- python3全栈开发-面向对象的三大特性(继承,多态,封装)之继承
- Python 继承和多态
- Python 继承 多态