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

    面向对象

      一个类可以没有__init__ 方法

      在没有__init__的情况下,实例化经历了哪些步骤?

        1.创建一个空间给对象

        2.将这个空间的地址返回

      类中的代码是在实例化之前执行的

      在实例化的过程中,开辟了属于对象的一块空间

      对象可以查看类的静态属性,但是不能修改

      并且一旦修改,就不能取到类当中的内容了(除非手动删除这个修改的属性)

      所有的静态属性的修改,都应该由类名来完成,而不应该使用对象名来完成

      如果静态变量是一个不可变数据类型,那么只要对象修改这个数据,就相当于在对象的空间中新建

      如果静态变量是一个可变数据类型,那么对象修改这个容器中的元素,相当于修改类的空间中的元素

      如果静态变量是一个可变数据类型,那么对象直接对这个变量重新赋值,相当于修改对象自己空间中的元素

      结论

        只要是静态变量,就用类名去修改,永远修改成功,并且所有的对象都共享这个变量

      总结

        对象的命名空间:类指针对象的所有属性

        类的命名空间:方法和(静态属性字段)

        对象在寻找名字的时候:先找对象自己内存空间中的,找不到就去类的命名空间中寻找

        类中的名字是什么时候写入内存的

          代码从上到下执行的时候就已经写入的.一定是在实例化之前

        静态变量:尽量用类名去操作

      什么是组合

        一个类对象的属性是另外一个类的对象

    面向对象的三大特征

    所有的面向对象的语言 三大特征 通用的

    继承:为了解决类与类之间代码重复的问题

     类的继承的语法

      单继承

        在定义类的时候加(),括号里面写的就是继承的类

        class A:pass

        class B(A):pass

        A类:父类 基类 超类

        B类:子类 派生类

      多继承(Python支持  java不支持)

        class C:pass

        class D:pass

        class E(C,D):pass

        E继承了CD

    子类可以继承父类的方法和属性

    继承

      子类调用方法,如果子类自己有,用自己的,用了自己的就不用父类的

      如果子类自己没有才调用父类的

      如果子类有个性化的父类没有的方法,可以单独定义在子类中

      只有子类能够使用父类中的方法,父类不可以使用子类中的方法

    当某一个方法,父类和子类都拥有的时候,那么在子类的方法中,调用父类的同名方法就会用到

        1  父类名.方法名(self,..)

        2  super().方法()

    class Animal:
        def __init__(self,name,kind,language):
            self.name=name
            self.kind=kind
            self.language=language
        def eat(self):
            print('%s is eat'%self.name)
        def drink(self):
            print('%s is drink'%self.name)
        def yell(self):
            print('%s is yell '%self.name)
        def sleep(self):
            print('%s is sleep'%self.name)
    class Cat(Animal):
        def climb(self):
            print('%s can climb'%self.name)
        def sleep(self):
            Animal.sleep(self)
            print('团着睡')
    class Dog(Animal):
        def yell(self):
            super().yell()
            print('大声叫')
        def sleep(self):
            super().sleep()
            print('站着睡')
    xiaohua=Cat('小花','金吉拉','喵喵')
    xiaohei=Dog('小黑','土狗','旺旺')
    xiaohua.sleep()
    xiaohei.sleep()
    
    
    小花 is sleep
    团着睡
    小黑 is sleep
    站着睡
    

      

      

      

     

      

  • 相关阅读:
    WCF学习资料
    浅谈Configure和Setting
    面向对象的设计原则与目标[总结篇]
    异步调用与线程(总结篇)
    博客园“图灵微软名著杯博问大赛”
    《Flex 3权威指南》——Adobe官方培训教材
    Google和Yahoo专家眼中的JavaScript设计模式
    拥抱iPhone,拥抱软件开发的未来 ——转帖:中华读书报
    iPhone开发:抢先拥抱软件开发的未来
    jQuery之父强烈推荐之jQuery实战
  • 原文地址:https://www.cnblogs.com/z1115230598/p/9991087.html
Copyright © 2011-2022 走看看