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

alzui类封装的演化过程(续)--含继承机制和_super关键字

阅读更多
11、回顾一下类的形式定义(根类雏形基本形成)
_class("AObject", function(){
	this._init = function(){
		this._disposed = false;
	};
	//这个方法具体作何用途只能以后说明了,暂且理解成析构函数吧
	this.dispose = function(){
		this._disposed = true;
	};
});

12、设计基类的目的是为了继承,所以有必要对基础支持代码做些调整,以便于支持继承
在_class函数第二个参数位置添加一个参数superClass,用来引用当前类的父类,注意放在第二个位置是有目的的,主要是为了和java中的类定义形式产生对照关系。
//---- 基础支持代码开始 ----
function __newClass(){
	return function(){
		this._init.apply(this, arguments);
	};
}
function _class(className, superClass, classImp){
	if(superClass === null){
		//如果是null,默认父类为Object(实现中只有AObject继承自Object)
		superClass = Object;
	}else if(superClass === ""){
		//如果是"",默认父类为AObject,为什么这么做,还不便说清楚,以后再详细说明理由吧!
		superClass = window["AObject"];
	}
	var clazz = __newClass();
	clazz.prototype = new superClass();  //这是模拟继承的关键语句
	window[className] = clazz;
	classImp.apply(clazz.prototype);
}
//---- 基础支持代码结束 ----
_class("AObject", null, function(){
	this._init = function(){
		this._disposed = false;
	};
	this.dispose = function(){
		this._disposed = true;
	};
});

13、继承机制已经实现,下面就是如何方便的调用父类同名方法了,_super关键字登台
function __newClass(){
	return function(){
		this._init.apply(this, arguments);
	};
}
function _class(className, superClass, classImp){
	if(superClass === null){
		superClass = Object;
	}else if(superClass === ""){
		superClass = window["AObject"];
	}
	var clazz = __newClass();
	clazz.prototype = new superClass();
	var _super = superClass.prototype;  //原来_super的含义只是这个
	window[className] = clazz;
	classImp.apply(clazz.prototype, [_super]);
}
_class("AObject", null, function(){
	this._init = function(){
		this._disposed = false;
	};
	this.dispose = function(){
		this._disposed = true;
	};
});
//定义一个类,继承自AObject
_class("ClassA", "", function(_super){
	this._init = function(){
		_super._init.call(this);
		this._name = "ClassA";
	};
	this.dispose = function(){
		//就是这么调用父类方法的,看来也不是很简洁,讲究着用吧,总比写出来父类的名
		//字的形式要稳定的多!
		_super.dispose.apply(this);
	};
});

就先写这些吧,整个封装的演化过程已经是历史了,想回忆清楚还真有点难度。^_^
3
3
分享到:
评论

相关推荐

    TO-252_TO-251A_TO-251A1_TO-251_TO-126_TO-220封装

    根据给定的文件信息,我们将深入探讨几种常见的半导体器件封装形式:TO-252、TO-251A、TO-251A1、TO-251、TO-126 和 TO-220。这些封装类型广泛应用于功率晶体管、二极管等电子元件中,其设计旨在满足不同应用环境下...

    Core-Java-Interview-Questions.rar_core java interview

    - 类与对象:理解面向对象编程的基本概念,如封装、继承、多态。 - 构造器:了解构造器的作用,何时使用默认构造器和自定义构造器。 - 变量与数据类型:掌握基本数据类型、引用数据类型以及变量的声明和初始化。 ...

    Xilinx_Zynq-7000 、Artix-7、Kintex-7、Virtex-7 原理图及PCB封装库.rar

    Xilinx_Zynq-7000 、 Xilinx_Artix-7、Xilinx_Kintex-7、Xilinx_Virtex-7 原理图及PCB封装库;AD10格式的 封装 Xilinx_Artix-7.zip 302.69 KB, 下载次数: 313 , 下载积分: 资产 -2 信元, 下载支出 2 信元 ...

    VB.NET object-oriented.rar_VB .net_net_vb.net_vb.net excel

    "VB.NET面向对象的实现"这一主题是VB.NET编程中的核心概念,它涉及到类、对象、封装、继承、多态等面向对象编程的关键要素。 1. **类与对象**: 类是面向对象编程的基础,它是描述对象特性和行为的模板。在VB.NET...

    java基础继承封装多态

    继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是使用 `extends` 关键字,例如 `public class Child extends Parent`。在 Java 中,只支持单一继承,也就是说一个类只能有一个直接父类...

    【Python-Web自动化-10课-关键字驱动和POM封装】

    在Python Web自动化测试领域,关键字驱动和Page Object Model(POM)封装是两种常见的高级测试框架设计模式。这两种方法能够显著提升代码的可维护性和可读性,使得测试脚本更加模块化,易于管理和扩展。 **关键字...

    vb关键字汇总表.zip_VB语言关键字_vb关键字汇总

    VB的关键字是编程中的基础元素,它们具有特定的含义和功能,用于控制程序的流程、定义变量、声明函数等。下面我们将详细介绍VB语言中的关键字,并探讨其在编程中的作用。 1. 控制流关键字: - `If...Then...Else`...

    Programmation_Orientée_Objet_Java_2020-2021_java_Java_OOP_

    1. **基础概念**:首先,我们会了解什么是面向对象编程,与过程式编程的区别,以及它的三大特性——封装、继承和多态。 2. **Java环境设置**:如何安装JDK,配置环境变量,以及使用Java开发工具(如Eclipse或...

    JAVA_Super_Notebook.rar_super

    7. **反射机制**:解释Java反射的原理和用途,如何在运行时动态获取类的信息并操作类的对象,以及Class类、Constructor类、Method类和Field类的使用。 8. **网络编程**:基础的Socket编程,包括TCP和UDP通信,以及...

    明仔PHP面向对象(六日通)教程

    (六)类的封装和应用 6-1 类的封装和应用 (七)类的继承和应用 7-1 类的继承和应用 (八)类的抽象方法和类 8-1 类的抽象方法和类 (九)类中常见关键字 9-1 类中常见关键字 (十)类中接口应用 10-1 类中接口应用 ...

    类和对象、对象和封装、继承、多态、异常等教学...

    "第四章 继承.pdf"将详细解释如何定义和使用继承,以及super关键字和final关键字的作用。 4. **多态**: - **多态**:多态是面向对象的另一大特性,允许使用父类引用指向子类对象,使得同一个方法可以有不同的行为...

    java---- 封装,接口,继承,覆盖,构造过程,多态,static、this、super、final用法

    通过以上对封装、继承、覆盖、构造过程、多态以及 `static`、`this`、`super` 和 `final` 关键字的详细介绍,我们可以更好地理解和运用Java的核心概念和技术点,从而编写出更加高效、灵活和易于维护的代码。

    IT十年经典书系列英文版-Design_Patterns-Elements_of_Reusable_Object-Oriented_Software.pdf

    - **结构型模式**:关注类和对象的组合,封装复杂的关联关系,使代码设计更具灵活性和可扩展性。包括: - 适配器(Adapter):将一个类的接口转换成客户希望的另一个接口。 - 桥接(Bridge):将抽象部分与它的...

    Java-beginners-advice.rar_beginners

    - **继承**:学习如何通过extends关键字实现类的继承,以及super关键字的使用。 6. **多态性** - **接口与抽象类**:理解接口和抽象类的区别,以及它们在多态中的作用。 - **方法重写与重载**:了解如何通过重写...

    vb-oo.rar_oo_vb类

    在`vb-oo.rar`这个压缩包中,你可能会找到关于如何在VB中创建和使用类、实现多态、继承和封装的详细示例代码。通过学习这些示例,你可以深入理解VB的面向对象编程,并提升你的编程技能。记得解压文件并逐个查看,...

    C继承机制PPT学习教案.pptx

    例如,`Tuna`类通过`public`关键字从`Fish`类继承,这意味着`Fish`的所有公有和保护成员在`Tuna`中都是可见的。 4.3 公有继承: - **public继承**表示基类的公有和保护成员在派生类中保持公有和保护状态,允许派生...

    Micro-USB A B 定义和封装

    **Micro-USB A B 定义和封装** Micro-USB是一种通用串行总线(USB)接口的标准,广泛应用于各种移动设备,如智能手机、平板电脑、数码相机等。它的出现是为了替代传统较大的USB接口,以适应更小型化、便携式电子...

    Object-Oriented_Programming_with_Objective-C

    在面向对象编程中,对象是数据和操作数据的方法的封装体,它支持继承、封装和多态等特性。 ### 关于Objective-C Objective-C是一种通用、面向对象的编程语言,由Stepstone公司于1983年开发,并被苹果公司在其操作...

    C++关键字_全

    10. **class**:用于声明或定义类,是面向对象编程的核心,允许创建自定义数据类型,支持封装、继承和多态等特性。 11. **const**:一个非常重要的关键字,用于声明常量或指定变量的不可修改性。它可以应用于函数...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    如果一个类继承了抽象类,且不声明为抽象类,那么必须实现所有抽象方法。 - 抽象类可以包含非抽象方法,即有具体实现的方法。 - 抽象类可以有构造方法,这些构造方法用于初始化抽象类的成员,但不能直接创建抽象类...

Global site tag (gtag.js) - Google Analytics