zoukankan      html  css  js  c++  java
  • 面向对象---继承

    面向对象----继承

    继承 -- 需要解决代码的重复

    继承语法:

    class A:
        pass
    class B(A):
        pass
    
    B继承A,A是父类,B是子类
    A是父类 基类 超类
    B是子类 派生类
    
    字类可以使用父类中的:方法 静态变量
    
    class Animal:
        def __init__(self,name):
            self.name = name
        def eat(self):
            print(f'{self.name} is eating')
        def drink(self):
            print(f'{self.name} is drinking')
        def sleep(self):
            print(f'{self.name} is sleeping')
    class Cat(Animal):
        def climd_tree(self):
            print(f'{self.name} is climbing')
    class Dog(Animal):
        def house_keep(self):
            print(f'{self.name} is keeping')
    小白 = Cat('小白')
    小白.eat()
    #先开辟空间,空间理由一个类指针指向Cat
    #调用init,对象在自己的空间找init没有找到,到Cat类找init也没有找到,找父类Animal中的init
    当子类和父类的方法重名的时候,我们只是用子类的方法,而不会去调用父类的方法
    class Animal:
        def __init__(self,name):
           self.name = name
        def eat(self):
             print('%s is eating'%self.name)
        def drink(self):
             print('%s is drinking'%self.name)
        def sleep(self):
             print('%s is sleeping'%self.name)
    class Cat(Animal):
        def eat(self):
            print(f'{self.name}吃猫粮')
        def climb_tree(Self):
            print(f'{self.name} is climbing')
    小白 = Cat('小白')
    小白.eat
    
    
    子类想要调用父类的方法的同时还想执行自己的同名方法
    猫和狗在调用eat的时候即调用自己的也调用父类的
    在字类的方法中调用父类的方法:父类名.方法(self)
        
    class Animal:
        def __init__(self,name,food):
            self.name = name
            self.food = food
            self.blood = 100
            self.waise = 100
        def eat(self):
            print(f'{self.name} is {self.food}')
        def drink(self):
            print(f'{self.name} is drinking')
        def sleep(self):
            print(f'{self.name} is sleeping')
            
    class Cat(Animal):
        def Cat(self):
            self.bood += 100
            Animal.eat(self)
        def climb_tree(self):
            print(f'{self.name} is climbing')
            self.drink
    class Dog(Animal):
        def eat(self):
            self.waise += 100
            Animal.eat(self)
        def house_keep(self):
            print(f'{self.name} is keeping')
    小白 = Cat('小白','猫粮')
    小黑 = Dog('小黑','狗粮')
    小白.eat()
    小黑.eat()
    
    继承语法 class 子类名(父类名):pass
    父类和子类方法的选择:
    	子类的对象,如果去调用方法,永远优先调用自己的
        如果自己有 用自己的 
        自己没有,用父类的
        自己有 还想用父类的:直接在子类方法中调用父类的方法 父类名.方法名(self)
        
        
    
    

    单继承

    1. 调子类的:子类自己有的时候
    2. 调父类的:子类自己没有的时候
    3. 调子类和父类,子类父类都有的时候,在子类中调用父类

    多继承

    1. 一个类有多个父类,在调用父类方法的时候,按照继承顺序,先继承的先寻找
  • 相关阅读:
    第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
    POJ1050 To the Max 最大子矩阵
    POJ1259 The Picnic 最大空凸包问题 DP
    POJ 3734 Blocks 矩阵递推
    POJ2686 Traveling by Stagecoach 状态压缩DP
    iOS上架ipa上传问题那些事
    深入浅出iOS事件机制
    iOS如何跳到系统设置里的各种设置界面
    坑爹的私有API
    业务层网络请求封装
  • 原文地址:https://www.cnblogs.com/wang-xing-hao/p/11172703.html
Copyright © 2011-2022 走看看