面向对象编程

'''
面向对象编程的三大要素:
    1.继承:子类继承父类
        继承的方法就是在子类的类名后加上(父类名),继承后,子类可以将父类中已有的所有可被继承的,
        的属性和方法,全部继承在子类之中。通过子类实现对这些方法和属性的调用
        不可被继承的内容就是私有属性和私有方法
        构造方法可以被继承
        可以多继承,即继承多个父类。
        如果多个父类之间有相同的方法或者属性存在的话(包括构造方法),根据继承的顺序,从左往右,优先决定用谁的。(先继承谁就用谁的)
    2.封装
        封装是一种概念。不是某种特定形态
        为了降低代码的冗余,提升代码复用性的一种形式。
    3.多态
        程序的多种形态。
        一个事物具备多种不同的形态。可以在类的属性和方法上进行多态的定义。
        方法的重写:将父类之中已有的被子类所继承的方法,在子类中重新进行定义。不同的子类,同样的方法可以实现不同的效果。
        方法的重载(Python不支持方法的重载):同一个方法,基于定义的参数数量不同,来实现不同的业务。
'''


from class05_object.class_demo import Dog    #导入class_demo中的Dog类


#狗类
# class Dog:
#     attr_01 = '毛发'
#     attr_02 = '尖牙'
#     __attr_03 = '私有属性' #__表示私有属性,无法被子类继承。
#     def __init__(self,name):
#         self.name = name
#
#     def eat(self):
#         print('饿了就吃饭')
#
#     def __walk(self): #私有方法无法被继承
#         print('私有方法')

#贵宾犬类
class Poodle(Dog):

    attr_01 = '卷毛'  #这就是一种多态
    def eat(self):
        print('只吃细粮')

#金毛类
class Golden(Dog):
    def eat(self):
        print('爱吃肉')

     # 方法重载:python不支持,只做逻辑演示
    def eat(self,name):
        print('爱吃肉'+name)
    def eat(self,num,name):
        print('爱吃肉'+name)
        print('一次可以吃'+num+'块肉')

d = Dog('dd')
d.eat()
p = Poodle('pp')
# print(p.attr_01)
# print(p.attr_02)
# print(p.__attr_03)
p.eat()
# p.__walk

g = Golden('gg')
g.eat()

#以下为方法的重载演示代码(python不支持方法重载,仅作演示)
g.eat('牛肉')
g.eat('3','牛肉')



'''
模块的使用:
    模块就是包。python中很多官方提供的库供我们变成日常使用。还有很多第三方库供我们使用。
    如果想要使用这些库,需要通过导包实现使用。针对第三方库,导包之前需要先安装才可以正常
    使用。
        下载:在cmd中通过指令pip install实现下载安装。所有第三方库的名称不是固定的。需要安装什么包就百度搜索以下安装指令。
            下载第三方库默认是基于Python的官方源进行下载,所以下载速度比较慢。可以切换到国内源进行下载
            推荐清华源:清华源:https://pypi.tuna.tsinghua.edu.cn/simple
            完整下载指令: pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
        导入:所有的包都是在导入后才可以使用
            通过关键字from ... import .. 或者直接import ... 来实现导入
            跨文件导入也是同样的方法。
            导包一定注意导入的路径是否正确。
            有时候会选择复制别人的代码或者工程到本地编译器中。这时候一定检查导包路径,如果报错,就把导包全部删除,自己再导入一次。
            导包操作适用于第三方库的导入和跨文件内容调用。
        
'''

 

posted @ 2024-12-05 21:32  mafei666  阅读(30)  评论(0)    收藏  举报