1 '''
2 继承解释:
3 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法
4 之一是通过继承机制。
5 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。
6 作用:为了简化代码量,更好的维护。
7
8
9 特点:
10 子类可以继承父类的所有属性及方法(私有属性/方法除外)
11 子类是可以直接使用父类的公有方法的。
12 子类是可以有自己独有的方法/属性。
13
14 注意:
15 __init__:当子类没有显式的init方法时,会调用父类的init方法。
16 当子类有显式的init方法时,会调用子类本身的init方法。
17 当子类有显式的init方法时,可能会导致父类中init方法中的内
18 容无效,在子类的init方法中调用父类的init函数,将父类中的
19 init函数中的内容继承下来,格式:
20 父类名称.__init__(self, 参数1,参数2...(参数个数与形参个数一致))
21
22 函数/方法重写:在子类中有与父类同名的函数,并在子类中实现了该方法,
23 叫做方法的重写。
24
25 就近原则:当对象调用属性或方法时,先去自己本类=中查找,找到则
26 使用自己本类中的内容,本类中没有,再去父类中查找,一层一层向上查找,
27 如果本类及所有父类中都没有,则返回错误。
28
29 一个父类可以拥有多个子类。
30
31 '''
32 '''
33 语法格式:
34 class 类名(父类):
35 属性
36 方法
37 '''
38 # Cat color age miao eat() zhuolaoshu()
39 # Dog color age wang eat() kanjia()
40 # Animal color age eat()
41
42 '_Cat__an'
43
44 # 父类
45 class Animal():
46 def __init__(self, color, age):
47 self.color = color
48 self.age = age
49 self.__an = "1000"
50 def eat(self):
51 # print(self.__an)
52 print("吃饭")
53 def __body(self):
54 print("身体")
55
56 class Cat(Animal):
57 def __init__(self, color, age, miao):
58 # self.color = color
59 # self.age = age
60 # 调用父类的init方法:
61 # 语法格式: 父类名称.__init__(self, 参数1,参数2...(参
62 # 数个数与形参个数一致))
63 # 类似将父类的init方法中的所有内容复制并执行
64 Animal.__init__(self, color, age)
65 # 子类独有的属性
66 self.miao = miao
67
68 def eat(self):
69 # print("吃饭")
70 # 在子类中执行父类的方法
71 # 语法格式: 父类名称.函数名(self, 参数1,参数2...(参
72 # 数个数与形参个数一致))
73 Animal.eat(self)
74
75 print(self.miao + "吃饭")
76
77 # 子类独有的方法
78 def zhuolaoshu(self):
79 # print(self.color)
80 print("猫捉老鼠")
81
82 cat1 = Cat("白色", 10, "喵喵")
83 # print(cat1.color)
84 # print(cat1.age)
85 # print(cat1.miao)
86 cat1.eat()
87 # cat1.zhuolaoshu()
88
89
90 class Dog(Animal):
91 def __init__(self, color, age, wang):
92 # self.color = color
93 # self.age = age
94 Animal.__init__(self, color, age)
95 self.wang = wang
96 def eat(self):
97 Animal.eat(self)
98 print(self.wang + "吃饭")
99 def kanjia(self):
100 print("狗狗看家")
101 dog1 = Dog("aaa", 12, "wwww")
102 print(dog1.color, dog1.age, dog1.wang)
103 dog1.eat()
104 dog1.kanjia()
105 # cat1 = Cat("白色", 12, "喵喵")
106 # dog1 = Dog("黑色", 8, "汪汪")
107 # cat1.eat()
108 # cat1.zhuolaoshu()
109 # dog1.eat()
110 # dog1.kanjia()
111
112
113 """
114 object:所有类的父类:如果没有object,那么可能所有的类都不
115 存在。我们所创建的所有的类,默认都继承于object。如果我们创
116 建的class,就是继承于object,那么object写或不写没有区别。
117 """
118
119 # class Person:
120 # pass
121 # class Person():
122 # pass
123
124 class Person(object):
125 pass