• 面向对象的学习


    1、面向对象的三要素。

    (1)封装。 (2)多态。 (3)继承。 

    1、 封装 

           在js中,重点在于访问权限。在其他原生支持面向对象语言中,一般支持public、protected、private三个关键字来控制访问权限,但在js中,我们只能依靠复杂的作用域关系来控制:

    2、 继承 

    继承的实现,主要有2种方法:第一种是使用javascript本身的原型模型,通过给prototype赋值并改变其constructor属性来实现继承;第二种方法是不使用prototype,手动实现将父对象的所有属性方法深拷贝到子对象。比如A需要继承B,第一种写法可以:A.prototype=new B();A.prototype.constructor=A; 第二种写法可以写一个递归,或者使用jquery中的方法extend。另外,如果要实现多继承的话,prototype就真的好麻烦了(需要依次多个类,还要建空对象来接),第二种方法就比较简单,依次拷贝即可。一般这种继承为了找父类方便,可以在对象中加个属性,引用父类。 

    3、 多态 

    函数重载就不说了,都会,检查参数即可,很灵活。隐藏属性就是直接赋值undefined。需要注意的是,如果是打算继承B类的prototype,一定要建一个空对象来接,否则的话,你给类写方法的话,相当于直接修改了prototype,就算不写方法,你最后修改constructor时也会造成继承链错乱,接个空对象很容易: 

    2、设计一个三维向量类,并实现向量的加法、减法以及向量瑜标量的乘法和除法

    实例代码:

    class vector3:
     def __init__(self, x_ = 0, y_ = 0, z_ = 0):
      self.x = x_
      self.y = y_
      self.z = z_
     def __add__(self, obj):
      return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z)
     def __sub__(self, obj):
      return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z)
     def __mul__(self, obj):
      return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z)
     def __pow__(self, obj):
      return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y)
     def __str__(self):
      return str(self.x)+‘,‘+str(self.y)+‘,‘+str(self.z)
    v1 = vector3(1, 2, 3)
    v2 = vector3(0, 1, 2)
    print (v1 + v2)
    print (v1 - v2)
    print (v1 * v2)
    print (v1 ** v2)

  • 相关阅读:
    Jquery 跨域请求JSON数据问题
    js定时器实现图片轮播
    Redis数据一致性
    Redis缓存击穿、缓存穿透、缓存雪崩
    数据库连接池druid连接mysql数据库‘链路断开’问题
    Mysql启动错误: Can’t create test file xxx lower-test
    DB2-表空间
    DB2-Schema
    DB2-数据库
    DB2-实例
  • 原文地址:https://www.cnblogs.com/hzxxxb/p/10727046.html
Copyright © 2020-2023  润新知