码迷,mamicode.com
首页 > 其他好文 > 详细

类的继承

时间:2017-11-10 20:18:58      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:抽象   def   inf   school   统计   self   类方法   简单   实例   

面向对象编程(oop)语言的一个主要功能就是"继承"。继承是指这样一种能力:它可以使用现在有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为"子类"或"派生类"。
被继承的类成为"基类"、"父类"或"超类"。
继承的过程,就是从一般到特殊的过程。
要实现继承,可以通过"继承(Inheritance)和"组合"(Composition)来实现。
在某些OOP语言中,一个子类可以继承多个基类。三十一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式主要有2类:实现继承、接口继承。
?实现继承是指使用基类的属性和方法而无需额外编码的能力;
?接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构父类方法);

抽象类仅定义将由子类创建的一般属性和方法。
OO开发范式大致为:划分对象-抽象类-将类组织成为层次化结构(继承和合成)-用类与实例进行设计和实现几个阶段。

简单的例子:
 1 class dog(object):
 2     def __init__(self, name, age, color):
 3         self.name = name
 4         self.age = age
 5         self.color = color
 6 
 7     def normal(self):
 8         print("这是一只%s的狗,今年%s岁了,叫%s" % (self.color, self.age, self.name))
 9 
10 
11 class bigdog(dog):
12     def __init__(self, name, age, color, big):
13         dog.__init__(self, name, age, color)
14         self.big = big
15 
16     def sep(self):
17         print("这个品种的狗狗体型特别大!!!%s" % self.big)
18 
19 
20 a = dog("猪猪", "2", "白色")
21 b = bigdog("猪猪", "2", "白色", "非常巨大的贵宾犬")
22 a.normal()
23 b.sep()

例子二

 1 class school(object):
 2     """父类的一些基础属性"""
 3     mement = 0 #统计教室和同学数量
 4 
 5     def __init__(self, name, age, cla, sex):
 6         self.name = name
 7         self.age = age
 8         self.cla = cla
 9         self.sex = sex
10 
11         self.pay_fee()#调用后每次运行打印pay_fee类方法展示的内容
12 
13     def pay_fee(self):
14         print("开学了%s" % self.name)
15         school.mement += 1 #有一个学生或老师+1
16 
17     def __del__(self):
18         school.mement -= 1
19         print("%s退学啦" % (self.name))
20 
21     def tell(self):
22         """各个子类信息内容不同,需要变为字典,然后遍历字典里面的内容"""
23         print("\t","----info----%s" % self.name)
24         for k,v in self.__dict__.items():
25             print("\t",k,v)
26         print("\t","---------------")
27 
28 class student(school):
29     """学生"""
30     def __init__(self, name, age, cla, sex, score, fee):
31         school.__init__(self, name, age, cla, sex)
32         self.score = score
33         self.fee = fee
34 
35     def clss(self):
36         print("%s同学今年%s岁,%s,是个%s,入学考试%s分,交了%s元" % (self.name, self.age, self.cla, self.sex, self.score, self.fee))
37 
38 
39 class teacher(school):
40     """教师"""
41     def __init__(self, name, age, cla, sex, course, grade):
42         school.__init__(self, name, age, cla, sex)
43         self.course = course
44         self.grade = grade
45 
46     def teaching(self):
47         print("%s老师今年%s岁,%s,是个%s,科目%s,等级%s" % (self.name, self.age, self.cla, self.sex, self.course, self.grade))
48 
49 
50 t1 = student("李雷", "18", "四年级一班", "男孩", "300", "140000")
51 t2 = teacher("彪狗", "66", "四年级一班", "人妖", "语文", "低水平")
52 
53 t1.tell()

 

类的继承

标签:抽象   def   inf   school   统计   self   类方法   简单   实例   

原文地址:http://www.cnblogs.com/jesse-gong/p/7815919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!