Java教程

动态方法与静态方法 面向对象的特征之一:继承 属性查找 多继承问题

本文主要是介绍动态方法与静态方法 面向对象的特征之一:继承 属性查找 多继承问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

day27  离考试又近了一天 

动静态方法

动态方法

  1.绑定给对象的方法 最常见

 

 

 

2.绑定给类的方法 常见

 

 

 

 

3.静态方法 少见

 

 

 

 

面向对象的三大特性之一: 继承  (拿来吧你!!!)

  面向对象的三大特性分别是: 继承、封装、多态  往后的实际应用主要是继承  其他两个主要是一些概念 没有具体的表现形式

 

继承的含义

  现实生活中继承是用来描述人与人之间资源的从属关系

  eg:儿子继承父亲 那么就可以拥有父亲的一切(别墅、豪车...)

面向对象中继承则是用来描述类与类之间数据的从属关系

  eg:类A继承了类B 那么类A就可以使用类B中所有的数据(数据、功能..)

 

 

继承的目的

  现实生活中通过继承可以快速的积累财富少奋斗N多年 并且可以多继承
eg:可以认多个爹 傍多个富婆  (举个例子  现实中不可取不可取)


  面向对象中通过继承可以减少代码冗余 提升开发效率 同样也支持多继承
eg:类A可以继承多个类同时拥有多个类里面的代码使用权

 

继承的基本使用

class A(B):
 pass

我们将被继承的类称为:父类或者基类   指代B
继承别人的类称为:子类或者派生类      指代A

在python中一个类可以同时继承多个父类
class A(B,C,D):  # B\C\D都是父类 都可以继承
   pass

  

 

继承的本质

 

 

 

抽象:由下往上抽取相同特征  
    eg:学生和教师推导出人类  由儿子推导到父亲再推导到爷爷

继承:由上往下直接白嫖资源
    eg:学生和教师可以直接继承人类的功能和数据 

"""
在面向对象编程中 其实类和父类的主要功能都是用来减少代码冗余的

对象:数据与功能的结合体
类:多个对象相同数据和功能的结合体
父类:多个类相同数据和功能的结合体
"""

 

名字的查找顺序

 

#############################################
'''名字的查找顺序永远都是 先从当前对象自身开始查找'''
#############################################

 

1.不继承的情况下

名字的查找顺序是
  先从对象自己的名称空间中查找 没有则去类里面的名称空间查找


          先找对象 >>> 再找类


'''注意设置值的情况下是在自身的名称空间中添加或者修改数据'''

 

 

 

 

2.单继承的情况下

名字的查找顺序是
  先从对象自己的名称空间中查找 没有择取产生对象的类中查找
  如果还没有并且类有父类则去父类中查找 以此往复下去!!!


       查找顺序 对象 >>> 类 >>> 父类

 

 

 经典案例 搞你脑子

 

 

 

3.多继承的情况下(了解)

  经典类与新式类的概念

 

    在python2中存在经典类与新式类
    在python3中只有新式类
    区分的关键在于是否继承了一个默认的object类

    新式类:直接或者间接继承了object或者其子类的类
    经典类:不继承任何的类

# 在python 2 中

class A:
      pass
    print A.__bases__  # 空的
    print(A.__bases__)  # (<class 'object'>,)

为了兼容python2和python3  

 

 

  有时候我们在定义类的时候会习惯性的写


    class MyClass(object):
      pass

强度:研究菱形和非菱形问题object不参与图形构建
  非菱形继承的情况下
  	父类中名字的查找顺序就是按照继承时从左往右依次查找
   	如果多个父类还有分类 那么遵循"深度优先"  一条道走到黑
  		ADBECF
  菱形继承的情况下
  	父类中名字的查找顺序就是按照继承时从左往右依次查找
   	如果多个父类还有分类 那么遵循"广度优先" 再走深度
  		ADBECFM

  

 

派生类

  如果自己写的子类需要使用父类的方法 并且还需要基于该方法做扩展
  这样的子类我们称之为派生类(本质还是子类)
  那么可以使用super关键字来实现

 

 

 

 

 

 

这篇关于动态方法与静态方法 面向对象的特征之一:继承 属性查找 多继承问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!