任务7.2 继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-10
| 17页
| 41人阅读
| 9人下载
普通

内容正文:

任务7.2 继承和多态 7.2 继承和多态 父类子类的继承关系 多态的含义 7.2.1 继承 7.2.2 多态 7.2 继承和多态 7.2.1 继承 7.2.1 继承 通过继承创建的新类称为“派生类”或“子类”,被继承的类称为“基类”或“父类”。 通过继承创建的子类可继承父类的属性和方法,子类也可以重写父类的属性和方法,并且可自定义自身的属性和方法。 1.子类的定义 子类不能直接访问父类的私有属性和方法,但可以通过父类的公有成员方法访问父类的私有属性和方法。 7.2.1 继承 Person类 类变量:count 成员变量:name,age 成员方法:getInfo 类方法:ClassGetObject(cls) N Student类 类变量:count 成员变量:name,age,no,score 成员方法:getInfo,showInfo 类方法:ClassGetObject(cls)N 没有使用继承关系的类定义 Student类类需重新定义所有的属性和方法 Person类 类变量:count 成员变量:name,age 成员方法:getInfo 类方法:ClassGetObject(cls) N Student类 成员变量:no,score 成员方法:setScore     有继承关系的类定义 Student类定义自身特色的属性和方法,与父类相同的属性和方法继承父类 2.类的定义 7.2.1 继承 class Person(): count=0 # 父类类变量,对象总数 def __init__(self,name,age): # 父类构造方法 self.name=name # 父类成员变量,人名 self.age=age # 父类成员变量,年龄 Person.count+=1 def getInfo(self): # 父类普通成员方法,打印人的信息 print("%s年龄是%d。"%(self.name,self.age)) @classmethod def classGetObject(cls): # 父类类方法 print("父类类方法classGetObject:已创建%d个对象。"%(cls.count)) #类内可通过cls访问类变量 【例7-12】父类及其子类的定义。 (1)父类Person定义 7.2.1 继承 class Student(Person): def __init__(self,name,age,no): # 子类构造方法 super().__init__(name,age) self.no=no self.score=0 def showInfo(self,score): # 子类普通成员方法,设置本门课成绩 self.score=score Person.getInfo(self) print("%s同学的学号是%s,本门课成绩是%d。"%(self.name,self.no,self.score)) (2)子类Student的定义 在定义子类时,需要明确指出其父类名 调用父类构造方法初始化成员变量人名和年龄 子类的showInfo()方法调用了父类的getInfo() 7.2.1 继承 (1)在定义子类时,需要明确指出其父类名,其基本语法格式如下。 class.子类名(父类名) class Student(Person): def __init__(self,name,age,no): # 子类构造方法 super().__init__(name,age) self.no=no self.score=0 ...... 7.2.1 继承 (2)子类的属性(变量),其中的name、age与父类共用,因此这两个成员变量的初始化需要通过子类的_init__()方法调用父类的__init__()方法来完成。在调用时需指明父类名及相关的参数,基本格式如下: supper().__init__(参数) class Student(Person): def __init__(self,name,age,no): # 子类构造方法 super().__init__(name,age) self.no=no self.score=0 ...... 7.2.1 继承 (3)在子类调用父类的方法时,同样需要指明父类名。基本格式如下: 父类名.父类方法(self,参数) class Student(Person): def __init__(self,name,age,no): # 子类构造方法 super().__init__(name,age) def showInfo(self,score): # 子类普通成员方法,设置本门课成绩 self.score=score Person.getInfo(self) print("%s同学的学号是%s,本门课成绩是%d。"%(self.name,self.no,self.score)) 7.2.1 继承 student1=Student('韩梅梅',18,'190404101') #创建对象 student1.showInfo(95) # 调用子类自身成员方法 student1.classGetObject() # 调用父类类成员方法,也可以用Person或Studet调用 Person.classGetObject() Student.classGetObject() 【例7-13】父类、子类方法的调用。 韩梅梅年龄是18。 韩梅梅同学的学号是190404101,本门课成绩是95。 父类类方法classGetObject:已创建1个对象。 父类类方法classGetObject:已创建1个对象。 父类类方法classGetObject:已创建1个对象。 子类方法的调用参考“成员方法的调用”。父类方法的调用可以通过父类名、子类名、子类对象进行调用。 7.2.2 多态 7.2.2 多态 父类及其子类中的属性或方法使用了相同的名称,程序在调用这些属性或方法时,需确定调用哪个类下的属性和方法实现不同的功能,这就是类Python中的多态。 多态的概念 【例7-14】多态类定义。 class Person(): def __init__(self,name,age): #父类构造方法 self.name=name # 父类成员变量,人名 self.age=age # 父类成员变量,年龄 def getInfo(self): # 父类普通成员方法,与子类方法同名,打印人的信息 print("%s先生/女士年龄是%d。"%(self.name,self.age)) class Student(Person): def __init__(self,name,age,no,score): super().__init__(name,age) self.no=no self.score=score def getInfo(self): # 子类普通成员方法,与父类方法同名,打印信息多多于父类 print("%s同学的学号是%s,年龄是%d,本门课成绩是%d。"%(self.name,self.no,self.age,self.score)) def showInfo(temp): temp.getInfo() # 调用getInfo方法,该方法在父类、子类中都存在 在【例7-14】中,父类Person下有成员方法getInfo(),子类Student下也有getInfo()方法,但因为人的身份不同,所以这两个方法执行的功能(print内容)并不相同。现有类外函数showInfo()调用getInfo()方法。 7.2.2 多态 person1=Student('韩梅梅',18,'190404101',95) # 创建子类对象 person2=Person('韩商',45) # 创建父类对象 showInfo(person1) showInfo(person2) 多态类的应用 韩梅梅同学的学号是190404101,年龄是18,本门课成绩是95。 韩商先生/女士年龄是45。 自动根据对象对应类调用相应对象所在类下的getInfo()方法。 函数showInfo自动调用子类Student类下的getInfo方法 函数showInfo自动调用父类Person类下的getInfo方法 【例7-14】多态类定义。 7.2.2 多态 边学边练: 请设计Python程序完成以下功能: (1)创建一个动物类Animal,该类包括动物名称name、颜色color、年龄age三个属性,属性值在构造方法中完成初始化。还有一个打印该动物信息的getInfo()方法,将属性信息全部打印输出。 (2)创建一个子类Dog,该类继承自Animal类,添加一个品种category属性,其他属性继承自父类,属性值在构造方法中完成初始化。Dog类有一个getInfo()方法,将Dog类的属性信息全部打印输出。 (3)创建一个父类对象和一个子类对象,分别调用getInfo()方法进行对象信息的打印输出。 $$

资源预览图

任务7.2  继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
任务7.2  继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
任务7.2  继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
任务7.2  继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
任务7.2  继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
任务7.2  继承和多态(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。