`
titan
  • 浏览: 113692 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript和java的面向对象 (2)

阅读更多

 第四节 继承
 
  本节是比较java与js如何实现继承
  
  java的类定义包括类和接口。类之间和接口之间可以分别通过extends关键字实现继承。类
 和接口不支持多重继承,只能有一个祖先。但一个类可以实现多个接口,这可以理解为一种特
 殊的多重继承。无论extends还是implements,都是可以对子类使用instanceof运算符,并返回
 为true.
  
 js中没有明确规定的继承机制,这些都是开发者通过模仿实现的。所以有些继承的细节有各种不
 同的方式:
   1. 对象冒充
    父类定义的构造函数使用this关键字给所有属性和方法赋值,子类使父类的构造函数成子类
  的方法,然后调用它,将
   
  父类的方法和属性在子类中定义。这里可以实现从多个类多重继承,但如果有同名方法和属性,
  后一个的调用的构造函数具有优先性。
      function ClassA(sColor) {
        this.color = sColor;
        this.sayColor = function() {
         alert(this.color);
        };
      }
      fuction ClassB(sColor, sName){
        this.newMethod = ClassA;
        this.newMethod(sColor);
        delete this.newMethod;
        
        this.name = sName;
        this.sayName = function () {
          alert(this.name);
        };
      }
      
   2.  call方法
     call方法与经典的对象冒充最相似。
     function ClassA(sColor) {
        this.color = sColor;
        this.sayColor = function() {
         alert(this.color);
        };
      }
      fuction ClassB(sColor, sName){
        //this.newMethod = ClassA;
        //this.newMethod(sColor);
        //delete this.newMethod;
        ClassA.call(this, sColor);
        
        this.name = sName;
        this.sayName = function () {
          alert(this.name);
        };
      }
     
   3.  apply方法
     apply方法与call也相似,只是换用apply()方法,并且使用参数数组
      function ClassA(sColor) {
        this.color = sColor;
        this.sayColor = function() {
         alert(this.color);
        };
      }
      fuction ClassB(sColor, sName){
        //this.newMethod = ClassA;
        //this.newMethod(sColor);
        //delete this.newMethod;
        ClassA.apply(this, new Array(sColor));
        
        this.name = sName;
        this.sayName = function () {
          alert(this.name);
        };
      }
   4.  原型链
     原型是一种对象模板,能够形成原型链,将父类的所有属性和方法都赋值给子类的实例。这
     种方法的弊端是不支持多重继承。并且对于所有子类的实例,instancof父类和子类本身都返回true。
      function ClassA(sColor) {
       this.color = sColor;
      }
      ClassA.prototype.sayColor = function () {
        alert(this.color);
      }
      
      fuction ClassB(sColor, sName){
      
      }
      
      ClassB.prototype = new ClassA();
      ClassB.prototype.name = "";
      ClassB.prototype.sayName = function(){
       alert(this.name);
      }
     
   5.  混合方式
     使用对象冒充继承父类的属性,使用原型链方式继承父类的方法。
     function ClassA(sColor) {
       this.color = sColor;
      }
      ClassA.prototype.sayColor = function () {
        alert(this.color);
      }
      
      fuction ClassB(sColor, sName){
        ClassA.call(this, sColor);
        this.name = sName;
      }
      
      ClassB.prototype = new ClassA();
      ClassB.prototype.sayName = function(){
       alert(this.name);
      }
     
   利用第三方js库zInherit和xbObjects对继承也有一些不错的支持。

分享到:
评论

相关推荐

    习题解答-Java面向对象程序设计-邢国波-清华大学出版社.pdf

    邢国波的《Java面向对象程序设计》一书旨在帮助读者理解和掌握Java语言的核心特性,特别是面向对象编程的概念。以下是根据提供的内容和标签提炼出的一些关键知识点: 1. **Java的特点**: - **跨平台性**:Java...

    Javascript 面向对象的JavaScript进阶

    在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承性和多态性。 ##### 8.1.1 封装性 **定义:** 封装性是面向对象编程的一个...

    猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip.lnk

    猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip.lnk猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip.lnk猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个...

    javascript面向对象编程

    面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的...

    JAVASCRIPT 面向对象编程精要

    JavaScript是一种基于原型的语言,这意味着它不像传统的面向对象语言(如Java或C++)那样拥有类的概念。在JavaScript中,对象是核心,一切都可以视为对象。JavaScript的对象是动态的,即可以在运行时添加或删除属性...

    java 面向对象程序设计课件

    Java是一种广泛使用的面向对象编程语言,它以其平台独立性、高效性和丰富的类库而闻名。在"java 面向对象程序设计课件"中,我们可以深入探讨以下几个关键知识点: 1. **面向对象编程基础**:Java是面向对象的语言,...

    JavaScript面向对象编程指南.pdf

    JavaScript是一种高级的、解释型的编程语言,它支持面向对象的编程范式,允许开发者创建对象、使用继承和多态等面向对象的特性。以下是关于JavaScript面向对象编程的一些关键知识点: 1. 对象:在JavaScript中,...

    猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip

    标题 "猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip" 提供了关于一个编程项目的概览,这个项目采用了三种不同的编程语言——Java、Kotlin和JavaScript,来实现同一个猜拳游戏。面向对象...

    Javascript面向对象编程

    通过上述介绍,可以看出JavaScript虽然不像传统意义上的面向对象语言那样提供明确的类和对象概念,但它仍然支持面向对象编程的基本思想。利用`function`作为类的定义、`new`操作符创建对象、以及`this`和`prototype`...

    JavaScript 面向对象编程详细讲解文档

    JavaScript是一种动态类型的脚本语言,虽然它不像Java或C#那样拥有传统的类和实例机制,但它的面向对象编程能力仍然非常强大。JavaScript的核心在于对象、原型和隐式继承,这些都是理解其面向对象特性的重要概念。 ...

    JavaScript面向对象的支持

    JavaScript是一种广泛应用于Web开发的脚本语言,它虽然支持面向对象编程,但其面向对象的实现方式与其他传统面向对象语言(如Java或C++)有所不同。JavaScript中的面向对象特性主要体现在以下几个方面: 1. **基于...

    Java面向对象的语言 面向对象软件开发 课件

    在"Java面向对象的语言 面向对象软件开发 课件"中,我们将深入探讨以下几个核心知识点: 1. **面向对象软件开发概述**:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的...

    JavaScript中的面向对象.pdf

    JavaScript,作为一种广泛使用的脚本语言,常常被误解为非面向对象的语言,但实际上,JavaScript完全支持面向对象编程(OOP)的三大核心原则:封装、继承和多态。尽管它的实现方式与传统的面向对象语言(如Java或C++...

    JavaScript面向对象程序设计

    JavaScript是一种广泛用于Web开发的动态编程语言,虽然它在语法层面并未像Java或C++那样直接支持类(class)等传统面向对象概念,但它仍然具备面向对象的特性,如封装、继承和多态。面向对象编程(OOP)的核心是通过...

    JAVASCRIPT是一门面向对象语言归类.pdf

    JavaScript是一门彻头彻尾的面向对象语言,尽管它的语法和传统的面向对象语言如Java、C++有所不同。这种误解往往源于JavaScript的函数式脚本语言特性,以及它独特的原型链机制。JavaScript中的一切皆为对象,包括...

    完成Java面向对象程序设计实验课的心得体会.doc

    "Java面向对象程序设计实验课的心得体会" 本文通过对 Java 面向对象程序设计实验课的学习和实践,探索了 Java 的重要性和面向对象编程思想的应用。作者通过实验课的学习,逐步熟悉了 Java 编程思想,掌握了基本技巧...

    JavaScript面向对象编程指南 第2版 高清 带索引书签目录_样章.pdf

    在JavaScript中,由于它是一种基于原型的语言,所以它的面向对象编程与传统基于类的语言如Java或C++有所不同。 接下来,书中提到的“原型”是JavaScript的一个核心概念。原型是JavaScript实现继承的基础。每个对象...

    javaScript和java参考手册

    2. 学习对象和类的概念,理解JavaScript的原型链和Java的类继承。 3. 深入理解函数和方法,特别是JavaScript中的闭包和高阶函数,以及Java中的设计模式。 4. 掌握JavaScript的事件处理和DOM操作,以及Java的异常处理...

    [JavaScript] JavaScript 面向对象设计原则 (英文版)

    [No Starch Press] JavaScript 面向对象设计原则 (英文版) [No Starch Press] The Principles of Object-Oriented JavaScript (E-Book) ☆ 图书概要:☆ If you've used a more traditional object-oriented ...

Global site tag (gtag.js) - Google Analytics