您的位置:首页 > 编程语言 > ASP

ASP.NET AJAX的面向对象思想--接口

2008-10-11 10:03 555 查看
  接口是类要实现的逻辑协议,是对类进行集成的公共遵守的规范。它能使多个类和同一个接口把实现定义和类的具体实现结合起来。下面的例子定义了一
个基类Tree和接口IFruitTree,Apple和Banana这两个类实现了接口IFruitTree,但Pine类没有实现接口
IFruitTree。

  

Type.registerNamespace("Demo.Trees");
  Demo.Trees.IFruitTree = function() {}

  Demo.Trees.IFruitTree.Prototype = {

  bearFruit: function(){}

  }

  Demo.Trees.IFruitTree.registerInterface('Demo.Trees.IFruitTree');

  Demo.Trees.Tree = function(name) {

  this._name = name;

  }

  Demo.Trees.Tree.prototype = {

  returnName: function() {

  return this._name;

  },

  toStringCustom: function() {

  return this.returnName();

  },

  makeLeaves: function() {}

  }

  Demo.Trees.Tree.registerClass('Demo.Trees.Tree');

  Demo.Trees.FruitTree = function(name, description) {

  Demo.Trees.FruitTree.initializeBase(this, [name]);

  this._description = description;

  }

  Demo.Trees.FruitTree.prototype.bearFruit = function() {

  return this._description;

  }

  Demo.Trees.FruitTree.registerClass('Demo.Trees.FruitTree', Demo.Trees.Tree, Demo.Trees.IFruitTree);

  Demo.Trees.Apple = function() {

  Demo.Trees.Apple.initializeBase(this, ['Apple', 'red and crunchy']);

  }

  Demo.Trees.Apple.prototype = {

  makeLeaves: function() {

  alert('Medium-sized and desiduous');

  },

  toStringCustom: function() {

  return 'FruitTree ' + Demo.Trees.Apple.callBaseMethod(this, 'toStringCustom');

  }

  }

  Demo.Trees.Apple.registerClass('Demo.Trees.Apple', Demo.Trees.FruitTree);

  Demo.Trees.GrannySmith = function() {

  Demo.Trees.GrannySmith.initializeBase(this);

  // You must set the _description feild after initializeBase

  // or you will get the base value.

  this._description = 'green and sour';

  }

  Demo.Trees.GrannySmith.prototype.toStringCustom = function() {

  return Demo.Trees.GrannySmith.callBaseMethod(this, 'toStringCustom') + ' ... its GrannySmith!';

  }

  Demo.Trees.GrannySmith.registerClass('Demo.Trees.GrannySmith', Demo.Trees.Apple);

  Demo.Trees.Banana = function(description) {

  Demo.Trees.Banana.initializeBase(this, ['Banana', 'yellow and squishy']);

  }

  Demo.Trees.Banana.prototype.makeLeaves = function() {

  alert('Big and green');

  }

  Demo.Trees.Banana.registerClass('Demo.Trees.Banana', Demo.Trees.FruitTree);

  Demo.Trees.Pine = function() {

  Demo.Trees.Pine.initializeBase(this, ['Pine']);

  }

  Demo.Trees.Pine.prototype.makeLeaves = function() {

  alert('Needles in clusters');

  }

  Demo.Trees.Pine.registerClass('Demo.Trees.Pine', Demo.Trees.Tree);
Interface.js脚本文件中定义了一个Tree基类和一个IFruitTree接口。Apple和Banana两个继承类实现了
IFruitTree接口,而Pine类没有实现IFruitTree接口。运行Interface.aspx,点击“对象创建”、“接口检查”、“调用
接口方法”体验一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: