下面的例子是使用TypeScript
语法来实现Programer
类 继承 Person
类
TypeScript语法:
/**
* Created by liujun on 2017/12/29.
*/
/**
* 1.定义一个类
*/
class Person{
// let name:string; //这个会报错,不能有let声明
/**
* 2.定义变量
*/
name:string;
age:number;
/**
* 3.定义构造函数
* @param name
* @param age
*/
constructor(name:string,age:number){
this.name=name;
this.age=age;
}
/**
* 定义方法
* @returns {string}
*/
getName():string{
return this.name;
}
}
/**
* 2.定义一个Programer类 并且继承 Person类
*/
class Programer extends Person{
job:string;
constructor(name:string,age:number,job:string){
//调造用父亲Persion的构器
super(name,age); // super 要放在 this 前面
this.job=job;
}
//定义个新的方法
getJob():string{
return this.job;
}
}
/**
* 3.新建一个 Programer 类
*/
let programer:Programer=new Programer('jack',20,'前端开发');
console.log(programer.getName());
console.log(programer.getJob());
编译成ES5语法
// 实现继承的私有函数
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
/**
* Created by liujun on 2017/12/29.
*/
/**
* 1.定义一个类
*/
var Person = (function () {
/**
* 3.定义构造函数
* @param name
* @param age
*/
function Person(name, age) {
this.name = name;
this.age = age;
}
/**
* 定义方法
* @returns {string}
*/
Person.prototype.getName = function () {
return this.name;
};
return Person;
}());
/**
* 2.定义一个Programer类 并且继承 Person类
*/
var Programer = (function (_super) {
//调用实现继承的函数
__extends(Programer, _super);
function Programer(name, age, job) {
//调用父亲Persion的构器
_super.call(this, name, age); // super 要放在 this 前面
this.job = job;
}
//定义个新的方法
Programer.prototype.getJob = function () {
return this.job;
};
return Programer;
}(Person));
/**
* 3.新建一个 Programer 类
*/
var programer = new Programer('jack', 20, '前端开发');
console.log(programer.getName());
console.log(programer.getJob());