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

  接口是类要实现的逻辑协议,是对类进行集成的公共遵守的规范。它能使多个类和同一个接口把实现定义和类的具体实现结合起来。下面的例子定义了一 个基类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,点击“对象创建”、“接口检查”、“调用 接口方法”体验一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值