python3 面向对象编程,类的继承详解,
最近无所事事总想写点什么!一翻书就翻到了类的继承,难得突发奇想啊,俗话说的好:“人生得意须尽欢,莫使金樽空对月”,难得感想就来写一篇关于类的继承的知识点的内容吧!
类的继承分为以下几个内容:
- 单继承:顾名思义就是继承单个父类
- 多继承·:顾名思义就是继承多个父类
- 多重继承:多重继承就是相互继承!但前提是同一个方法属性不能重复继承!(下面会详解)
单继承:(如下举例)
class fulei():
def fufang(self):
self.name="Adi"
self.sex=18
print("我是父类的方法: 我的名字叫:%s ,我的性别是:%d" %(self.name,self.sex) )
class zilei(fulei):
print("我是子类")
adi=fulei()
adi.fufang()
adi1=zilei() # 实例化子类为对象
adi1.fufang() # 通过子类的继承调用父类中的方法
输出结果:
我是子类
我是父类的方法: 我的名字叫:Adi ,我的age是:18
我是父类2的方法: 我的名字叫:千灯 ,我的年龄是:16
多继承:(如下举例)
class fulei():
def fufang(self):
self.name="Adi"
self.sex=18
print("我是父类的方法: 我的名字叫:%s ,我的性别是:%d" %(self.name,self.sex) )
class fulei2():
def fufang2(self):
self.name="千灯"
self.sex=16
print("我是父类2的方法: 我的名字叫:%s ,我的性别是:%d" %(self.name,self.sex) )
class zilei(fulei,fulei2):
print("我是子类")
adi1=zilei() # 直接实例化子类为对象
adi1.fufang()
adi1.fufang2()
输出结果:
我是子类
我是父类的方法: 我的名字叫:Adi ,我的age是:18
我是父类2的方法: 我的名字叫:千灯 ,我的年龄是:16
多重继承:(如下举例)
class fulei():
def fufang(self):
self.name="Adi"
self.age=18
print("我是父类的方法: 我的名字叫:%s ,我的age是:%d" %(self.name,self.age) )
class fulei2(fulei):
def fufang2(self):
self.name="千灯"
self.age=16
print("我是父类2的方法: 我的名字叫:%s ,我的年龄是:%d" %(self.name,self.age) )
class zilei(fulei2):
# 这样的重复继承调用会报错!因为fulei中的方法fulei2已结全部继承了,无需再重复继承fulei中的方法
# class zilei(fulei,fulei2): # 这样的重复继承调用会报错!因为fulei中的方法fulei2已结全部继承了,无需再重复继承fulei中的方法
# 当然你可以这样写,不过这样py就只在fulei2中找,把指针指向fulei2,fulei1就没有意义了(不起作用),这种写法其实就相当于 : class zilei(fulei2):
# class zilei(fulei2,fulei):
print("我是子类")
adi1=zilei() # 直接实例化子类为对象
adi1.fufang() # 当你使用重复继承fulei,fulei2是指针没办法区别你要指向的是fulei还是fulei2 ,所以会报错!,比如上面的第二种写法!
adi1.fufang2() # 当你使用重复继承fulei,fulei2是指针没办法区别你要指向的是fulei还是fulei2 ,所以会报错!,比如上面的第二种写法!
输出结果:
我是子类
我是父类的方法: 我的名字叫:Adi ,我的age是:18
我是父类2的方法: 我的名字叫:千灯 ,我的年龄是:16
注意看多重继承里面的注释内容,坑都在里面了,可以复制代码自己试验看看结果!有些人喜欢把多继承跟多重继承一起叫多重继承,还有些喜欢把多继承跟多重继承一起叫多继承!我这里把内容细分为三个知识点主要便于理解记忆,不会搞混!
如果哪位大佬还能找出其他问题欢迎留言讨论!