`
zccst
  • 浏览: 3319083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[Object]继承(经典版)(四)多重继承和组合继承

阅读更多
作者:zccst


一、多重继承
不得不说,这又是异常精彩的章节,是原型链的升华。
//父类1
function Parent1(name,age){
    this.name = name;
    this.age = age;
    this.height=180;
}
Parent1.prototype.say = function(){
    alert('hi...');
}

//父类2
function Parent2(name,age,weight){
    this.name = name;
    this.age = age;
    this.weight = weight;
    this.height = 170;
    this.skin='yellow';
}
Parent2.prototype.walk = function(){
    alert('walk...');
}

//子类
function Child(name,age,weight){
    Parent1.call(this,name,age);
    Parent2.call(this,name,age,weight);
}

//建立联系
for(var i in Parent1.prototype){Child.prototype[i] = Parent1.prototype[i]}
for(var i in Parent2.prototype){Child.prototype[i] = Parent2.prototype[i]}

var c1 = new Child('xiaoming',10,8);
console.log(c1);




其实,多重继承才是真实的物理世界,有一位博友用多重继承实现了照片墙,甚是精彩。
可以说是受教了,开眼界了。

多重继承还是很强大的。
博主的主要思想是循环复制多个父类原型对象的属性和方法到子类的原型对象,这样子类就可以继承多个父类了。

照片墙是个很有说服力的例子。其关系是:

Photo //会选择,鼠标移上,鼠标离开
Child1 //继承Photo,重写鼠标移上,离开。目的是移上放大三倍,离开回到原来尺寸。
Child2 //继承Photo,实现旋转10-40度
Child3 //继承Child1和Child2,实现即放大三倍,有选择10-40度


二、组合继承

类似这样
function C(){
  B.call(this, xx);
  A.call(this, xx);
}





如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    Python类的多重继承问题深入分析

    正文 首先得说明的是,Python的类分为经典类 和 新式类 经典类是python2.2之前...2.经典类在类多重继承的时候是采用从左到右深度优先原则匹配方法的..而新式类是采用C3算法(不同于广度优先)进行匹配的 3.经典类是没有__

    Python多重继承之菱形继承的实例详解

    ### Python多重继承之菱形继承的实例详解 #### 引言 在面向对象编程中,继承是一种非常重要的机制,它允许我们创建一个类(子类)来继承另一个类(父类)的属性和方法,从而扩展或重写父类的行为。Python支持多种...

    浅析Python中的多重继承

    多重继承在面向对象编程中,提供了一种在类之间共享和复用代码的机制。通过这种方式,子类不仅可以从一个父类继承属性和方法,还可以从多个父类继承,从而使得类的设计更为灵活和强大。 首先,我们需要理解继承的...

    object-c基础教程

    - **继承(Inheritance)**: 子类可以继承父类的属性和方法。 - **多态(Polymorphism)**: 同一个接口可以有不同的实现。 - **动态类型识别(Dynamic types)**: 运行时确定对象的实际类型。 - **Categories**: 扩展现有...

    Object-C(中文版)

    ### Object-C(中文版) #### 开始吧 **Objective-C**是一种面向对象的编程语言,它是C语言的一种扩展。此语言被广泛应用于Mac OS X和GNUstep等遵循OpenStep标准的系统中。Objective-C能够在gcc支持的操作系统上进行...

    python的多重继承的理解

    Python中的多重继承是一种面向对象编程特性,允许一个子类继承多个父类的属性和方法。这种方式使得代码重用更加灵活,但同时也引入了方法解析顺序(Method Resolution Order, MRO)的问题,即当子类调用一个未在自身...

    面向对象教程-研究生

    3. "2009 研 C++ 第三讲.doc" 可能讲解继承和多态,包括单继承、多重继承、虚函数、纯虚函数和动态多态(运行时多态)。 4. "2009 研 C++ 第四讲.doc" 可能涉及抽象类和设计模式,讨论如何利用抽象类构建灵活的软件...

    c#经典题目

    C#不支持传统意义上的多重继承,即一个类不能同时继承多个类。然而,可以通过实现多个接口来模拟多重继承的效果。接口可以包含多个,允许一个类实现来自不同接口的多个特性。 #### 4. `protected`修饰符的访问范围 ...

    C++程序设计谭浩强扫描版加上课后答案

    继承分为单继承、多继承和多重继承,其中多态的实现主要依赖于虚函数(virtual function)和纯虚函数(pure virtual function)。 容器是C++标准库中的重要部分,如vector、list、set、map等,它们提供了动态存储和...

    javaee 经典面试题集锦

    - 接口支持多重继承,而抽象类只支持单一继承。 - 抽象类可以包含构造器和部分方法的实现,而接口不能包含任何实现,所有方法默认都是`abstract`的。 - 抽象类中的成员变量默认访问级别是`package-private`,而...

    Python中新式类与经典类的区别详析

    “新式类”和“经典类”的区分在Python 3之后就已经不存在,在Python 3.x之后的版本,因为所有的类都派生自内置类型object(即使没有显示的继承object类型),即所有的类都是“新式类”。 官方文档 ...

    .NET面试题经典

    - 接口可以被多重继承而类不能:这是正确的,接口在.NET中可以被多个接口继承,但类只能单继承,即一个类只能有一个父类。 - 任何事物都是对象:在.NET中,一切皆对象,所有类型都继承自System.Object基类。 - ...

    毕向东Java SE视频教程整理笔记

    - **面向对象的基本概念**:面向对象编程(OOP)是一种软件开发范式,Java支持的主要面向对象特性包括封装、继承和多态。 - **封装**:封装是指隐藏对象的具体实现细节,仅暴露必要的接口供外部调用。Java中通过访问...

    Java面向对象程序设计

    接口则是一种完全抽象的类型,只包含常量和抽象方法,可以实现多重继承效果。 7. **构造函数**:构造函数是类的一个特殊方法,用于初始化新创建的对象。Java允许定义有参数的构造函数,实现对象的定制化初始化。 8...

    Java语言程序设计 第11版(基础篇+进阶篇) 英文原版PPT

    4. **类与对象**:Java是面向对象的语言,核心概念包括类(Class)、对象(Object)、封装、继承和多态。理解如何定义类,创建对象,并通过方法(Method)进行交互。 5. **封装**:通过访问修饰符(public, private...

    高级语言C++程序设计第二版答案 第10章

    这可能是第10章的重点之一,学生会学习单一继承、多重继承和多态性。 6. 覆盖(Overriding)与隐藏(Hiding):覆盖是指子类重写基类的虚函数,以提供不同的实现。隐藏则是子类中声明同名成员,使得基类的同名成员...

    C++面向对象程序设计课后答案

    C++支持单继承和多重继承。子类可以添加新的成员,也可以覆盖父类的成员函数(即重写,也称为虚函数)。 多态性是面向对象编程的第三个重要特征,它允许不同的对象对同一消息作出不同的响应。在C++中,有两种形式的...

    c++经典问题(初学者的经典内容)

    多重继承允许类从多个不同的源继承属性和方法。 **关键点:** - **多重继承**:在定义派生类时,可以列出多个基类。 - **虚基类**:为了解决二义性问题,可以使用虚基类机制。 - **初始化**:在派生类构造函数的...

    C#_FAQ.pdf

    这种方式提供了类似多重继承的功能,同时避免了其中的一些复杂性和潜在问题。 --- 以上内容概述了C#常见问题及其解答,旨在帮助C++开发者快速入门C#。C#作为一种现代编程语言,在设计上吸取了C++和Java的优点,并...

Global site tag (gtag.js) - Google Analytics