面向对象的三大特性之继承-基础知识总结------彭记(05)

面向对象的三大特性之继承:

js中的某些对象没有一些需要的属性和方法,但是另外的对象有,那么拿过使用,就是继承。

js中继承的实现方式:

1.混入式继承:通过循环将一个对象中的所有属性和方法混入到另外一个对象中:

var me={

  work:function(){

  console.log(‘敲代码‘);

  }

};

var mayun={

  money:9999999,

  car:‘000‘,

  manager:function(){

    console.log(‘管理巴巴。。。‘);

 }

}

/*遍历,让me对象拥有mayun对象的所有属性*/

for(var key in mayun){

  me[key]=mayuan[key];

}

console.log(me);

2.使用原型实现继承:

function Person(){

  this.name=‘jack‘;

  this.age=‘20‘;

  this.sayHi=function(){

    console.log(‘大家好‘);

  }

}

function Painter(){

  this.name=‘lose‘;

  this.age=‘19‘;

  this.canPaint=function(){

    console.log(‘画画‘);

  }

}

var per=new Person();

var paint=new Painter();

function Student(){

}

/*修改构造函数的protoType属性来设置原型,但是原型只有一个,所以这种方式无法指定多种原型,后面指定的原型会覆盖前面指定的原型*/

/*Student.prototype=per;

var stu=new Student();

console.log(stu);*/

/*利用混入的方式给原型添加属性和方法*/

for(var key in per ){

  Student.prototype[key]=per[key];

}

for(var key in paint){

  Student.prototype[key]=paint[key];

}

var stu=new Student();

console.log(stu);

3.经典的实现继承方式:

var laoWang={

  company:‘wangda‘,

  money:100000000,

  sayHi:function(){

    console.log(‘我有钱‘+this.name);

  }

}

/*经典继承方式*/

var obj=Object.create(laoWang);

console.log(obj);

/*解决经典继承的兼容性问题*/

function createObj(obj){

  if(Object.create){

    var newObj=Object.crate(obj);

  }else{

      var newObj={};

      for(var key in obj){

       newObj[key]=obj[key];

      }

    }

    return newObj;

}

var obj =createObj(laoWang);

console.log(obj);

时间: 2024-12-24 13:15:45

面向对象的三大特性之继承-基础知识总结------彭记(05)的相关文章

java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承: 复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的.它必须能够做更多的事.引自<Think in java>    而代码复用也是程序员一直不断追求的.由此来说下代码复用的一种方式 java面向对象的三大特性--继承!! 在面向对象程序设计中,继承机制可以有效地组织类的结构.确定类之间的关系,在已有类的基础上开发新的类.继承机制在程序代码复用.提高软件开发效率.降低软件系统维护成本等方面具有重要作用.

面向对象的三大特性之继承

# 面向对象的三大特性之继承 # 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好 (如机器人) # 当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 (动物--猫) # 继承同时有两种含义:1,继承基类的方法,并且做出自己的改变或扩展(代码重用),这种意义并不大,因为它使子类和基类出现强耦合 # 2,声明某个子类兼容于某基类.定义一个接口类,子类继承接口类,并实现接口中定义的方法 # 接口继承只是接口类规定了子类必须实现的方法,但是接口类里不去实现,子类

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

面向对象编程三大特性之继承

面向对象编程有三大特性:继承,封装,多态~ 从object基类开始,逐步向下开枝散叶,组成了整个对象体系. 为什么要用这种形式? 解答这个问题之前,我们可以先回顾一下生物的进化史~ 从单细胞开始到现在的哺乳动物,在不断地进化中,物种的身体结构愈加复杂,这种进化所花费的时间非常漫长,但是一旦进化成功,后代就可以直接拥有父母的结构,而不用再次花费漫长的时间用来进化. 现在我们再次回到继承上来,object基类支持 .NET Framework 类层次结构中的所有类,并为派生类提供低级别服务.这是 .

Python全栈开发——面向对象的三大特性(继承 &amp; 多态 &amp;封装)

1.继承 1.两层意思改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o: def __init__(self,name,temperature): self.name=name self.temperature=temperature def turn_ice(self): if self.temperature<0: print('温度太低,变成[%s]' %self.name

事件流,事件捕获与事件冒泡-基础知识总结------彭记(018)

事件流: -事件流包括三个阶段-事件捕获阶段.处于目标阶段和事件冒泡阶段. -首先发生的是事件捕获,为截获事件提供了机会,然后是实际的目标接收到事件,最后一个阶段是冒泡阶段,可以在这个阶段对事件做出响应. 事件冒泡: -事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档). <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

递归-基础知识总结------彭记(06)

递归 -在程序中,递归就是函数自己直接或者间接调用自己. -就递归而言最重要的就是跳出结构,因为跳出了才可以有结果. 化归思想: -将一个问题由难化易,由繁化简 ,由复杂化简单的过程称为化归,它是转化和归结的简称. -递归思想就是将一个问题转换为一个已解决的问题来实现 -假如有一个函数'f',如果它是递归函数的话,那么也就是说函数体内的问题还是转换为'f'的形式. 例如:求1~100的和? function foo(n){ return n +foo(n-1); } 上面就是利用了化归思想: -

js中eval,arguments与异常处理的用法-基础知识总结------彭记(017)

eval的使用: <script> /*eval的作用: * 1.将字符串当成js代码来执行 * 2.可以将json格式的字符串转换为js对象*/ /*eval("var age = 30;"); console.log(age); eval("alert(123)"); var va = eval("1+1"); console.log(va);*/ //({"name":"rose",&qu

严格模式-基础知识总结------彭记(015)

严格模式 <script> /*严格模式*/ "use strict"; /*如果同时定义多个同名的变量,后面的将前面的覆盖*/ /*var age = 20; var age = 30; console.log(age); /!*1.Duplicate parameter name not allowed in this context:函数中不能定义多个同名的形参*!/ function test(age,age){ console.log(age); } test(1