`
wmingjian
  • 浏览: 13310 次
  • 性别: 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。这些封装类型广泛应用于功率晶体管、二极管等电子元件中,其设计旨在满足不同应用环境下...

    C-questions-questions-analysis-answer.rar_it_面试笔试

    1. 类与对象:理解类的封装、继承和多态性,以及对象的创建与销毁。 2. 构造函数与析构函数:掌握构造函数的作用及默认构造函数、拷贝构造函数的理解,同时理解析构函数的自动调用时机。 3. 封装:了解私有化、公有...

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

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

    Core-Java-Interview-Questions.rar_core java interview

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

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

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

    Java-ppt.rar_PPT java_java ppt_java.ppt_java源代码教学

    在Java-ppt中,你将学习到类、对象、封装、继承和多态等核心概念。类是对象的蓝图,而对象是程序中的具体实体。封装是将数据和操作这些数据的方法打包在一起的过程。继承允许一个类(子类)从另一个类(父类)继承...

    java基础继承封装多态

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

    PCB封装之-HDR-各种单双排针(1.27mm、2.0mm、2.54mm,史上最全)

    各种单双排针排座封装(1.27mm、2.0mm、2.54mm间距),匹配伍尔特料号

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

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

    JAVA_Super_Notebook.rar_super

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

    ncurses-devel-5.5-24.20060715.x86_64.rpm

    然而在这种机制发明后的几年中,逐渐被terminfo机制取代。程序员使用terminfo时不用花过多的时间查阅termcap。只需让程序查询terminfo的数据库就可得到控制字符,并将其发送到终端或终端仿真程序。 1.1 NCURSES是...

    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 信元 ...

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

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

    AD type-c接口原理图库、PCB封装库.rar

    (个人不推荐下载,下载请谨慎) 内含多种封装,市面上可见的USB-type-c的封装内部都有,侧立的、贴片的、直插的、两脚固定、四角固定……都...内有pcblib和schlib,即原理图库和PCB封装库都有了 注意:不含有3D模型

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

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

    Java-beginners-advice.rar_beginners

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

    PCB封装之-HDR-各种单双排针排座(1.27mm、2.0mm、2.54mm,史上最全)

    各种单双排针排座封装(1.27mm、2.0mm、2.54mm间距),匹配伍尔特料号

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

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

    C++关键字_全

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

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

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

Global site tag (gtag.js) - Google Analytics