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. 一个类有多个父类,在调用父类方法的时候,按照继承顺序,先继承的先寻找
  • 相关阅读:
    XML导入数据库
    文件流 +Excel导出
    LINQ
    Lambda
    多线程编程
    反射
    匿名类
    匿名类
    委托与事件
    ubuntu开放指定端口
  • 原文地址:https://www.cnblogs.com/wang-xing-hao/p/11172703.html
Copyright © 2011-2022 走看看