|
@@ -0,0 +1,77 @@
|
|
|
+var __extends = (this && this.__extends) || (function () {
|
|
|
+ var extendStatics = function (d, b) {
|
|
|
+ extendStatics = Object.setPrototypeOf ||
|
|
|
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
|
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
|
+ return extendStatics(d, b);
|
|
|
+ };
|
|
|
+ return function (d, b) {
|
|
|
+ if (typeof b !== "function" && b !== null)
|
|
|
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
|
+ extendStatics(d, b);
|
|
|
+ function __() { this.constructor = d; }
|
|
|
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
|
+ };
|
|
|
+})();
|
|
|
+// 多态: 父类型的引用指向了子类型的对象 ,不同类型的对象针对相同的方法,产生了不同的行为
|
|
|
+(function () {
|
|
|
+ //定义一个父类
|
|
|
+ var Animal = /** @class */ (function () {
|
|
|
+ //定义一个构造函数
|
|
|
+ function Animal(name) {
|
|
|
+ this.name = name;
|
|
|
+ }
|
|
|
+ //方法
|
|
|
+ Animal.prototype.run = function (distance) {
|
|
|
+ if (distance === void 0) { distance = 0; }
|
|
|
+ console.log("run " + distance + " far away", this.name);
|
|
|
+ };
|
|
|
+ return Animal;
|
|
|
+ }());
|
|
|
+ //定义一个子类
|
|
|
+ var Dog = /** @class */ (function (_super) {
|
|
|
+ __extends(Dog, _super);
|
|
|
+ //构造函数
|
|
|
+ function Dog(name) {
|
|
|
+ //调用父类的构造函数 实现子类中属性的初始化操作
|
|
|
+ return _super.call(this, name) || this;
|
|
|
+ }
|
|
|
+ //实例的方法
|
|
|
+ Dog.prototype.run = function (distance) {
|
|
|
+ if (distance === void 0) { distance = 10; }
|
|
|
+ console.log("run " + distance + " far away", this.name);
|
|
|
+ };
|
|
|
+ return Dog;
|
|
|
+ }(Animal));
|
|
|
+ var Pig = /** @class */ (function (_super) {
|
|
|
+ __extends(Pig, _super);
|
|
|
+ //构造函数
|
|
|
+ function Pig(name) {
|
|
|
+ return _super.call(this, name) || this;
|
|
|
+ }
|
|
|
+ Pig.prototype.run = function (distance) {
|
|
|
+ if (distance === void 0) { distance = 20; }
|
|
|
+ console.log("run " + distance + " far away", this.name);
|
|
|
+ };
|
|
|
+ return Pig;
|
|
|
+ }(Animal));
|
|
|
+ //实例化父类的对象
|
|
|
+ var ani = new Animal('动物');
|
|
|
+ ani.run();
|
|
|
+ //实例化子类对象
|
|
|
+ var dog = new Dog('大黄');
|
|
|
+ dog.run();
|
|
|
+ var pig = new Pig('佩奇');
|
|
|
+ pig.run();
|
|
|
+ /* 父类和子类的关系 可以通过父类的类型 创建子类的类型 */
|
|
|
+ var dog1 = new Dog('小黄');
|
|
|
+ var pig1 = new Pig('乔治');
|
|
|
+ dog1.run();
|
|
|
+ pig1.run();
|
|
|
+ /* 函数 */
|
|
|
+ function showRun(ani) {
|
|
|
+ ani.run();
|
|
|
+ }
|
|
|
+ showRun(dog1);
|
|
|
+ showRun(pig1);
|
|
|
+})();
|