核心提示:本篇围绕这类的继承,泛型,接口的知识来叙述TypeScript,同时也解释了其实与java或kotlin等语言很相似的原因。1.类的继承(就跟js中的原型是类似的)什么是继承:可以去百度一下java中...
本篇围绕这类的继承,泛型,接口的知识来叙述TypeScript,同时也解释了其实与java或kotlin等语言很相似的原因。
1.类的继承(就跟js中的原型是类似的)
什么是继承:可以去百度一下java中的继承的概念,就不做过多的描述了,偷个懒
实例:先定义一个父类Fuit水果类,再定义两个子类,且在父类Fuit中定义了一个eat方法

/**
* 类 继承,访问控制符
*/
//父类:水果
class Fuit {
//定义成员变量 只有子类才能访问此属性
protected name: string;
//构造方法
constructor(name) {
this.name = name;
}
//默认是公共方法public
eat() {
console.log(`我正在吃:${this.name}`)
}
}
//苹果:水果的子类
class Apple extends Fuit {
//定义私有属性的成员变量 外部是不能够访问此变量的(只是一个演示)
private age: number;
//在继承父类的构造方法上 自增一个属性,更改构造
constructor(name, age) {
super(name); //调用父类的构造
this.age = age;
}
//打印种龄方法
public displayAge() {
console.log("我的种龄是:" + this.age)
}
}
//香蕉:水果的子类
class Banana extends Fuit {
private age: number;
//在继承父类的构造方法上 自增一个属性,更改构造(只是一个演示)
constructor(name, age) {
super(name);
this.age = age;
}
//打印种龄方法
public displayAge() {
console.log("我的种龄是:" + this.age);
//调用自身的私有方法 因为外部是不能够通过实例化Banana调用displayName()这个私有方法的
this.displayName();
}
//打印名称方法
private displayName() {
console.log("我的名称是:" + this.name)
}
public getName() {
return this.name;
}
}
//实例化Apple
let apple = new Apple("苹果", 2);
//因为Apple继承了Fuit,而且Fuit类中eat()方法不是私有的,所以Apple类可以调用其父类中不是私有的eat()方法
apple.eat();//打印结果:"我正在吃:苹果"
apple.displayAge();//调用Apple类自身的displayAge()方法
//实例化Banana
let banana = new Banana("香蕉", 3);
banana.eat();
banana.displayAge();
2.泛型
什么是泛型:可以去百度一下java中的泛型的概念,就不做过多的描述了,偷个懒
//1.定义Array数组,数组中存放Banana香蕉这个类 let bananaArr: Array= [new Banana("菠萝香蕉", 2), new Banana("苹果香蕉", 3), new Banana("篱笆香蕉", 5)]; bananaArr.forEach(value => { console.log(value.getName()); //循环打印出香蕉中名称 }); //2.利用泛型建立一个公共的数据模型类 class CommentBean { private key: K; private value: V; setValue(key: K, value: V) { this.key = key; this.value = value; } getValue():V { return this.value; } } let commentBean = new CommentBean<number, string>(); commentBean.setValue(1, "你好阿"); console.log(commentBean.getValue());
3.接口
什么是接口:
接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法;
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
....
可以去百度一下java中的接口的概念,就不做过多的描述了,偷个懒
//定义一个接口
interface ILogin {
login(): void; //定义一个登录的抽象方法
getUserInfo(): string; //定义一个获取用户信息的抽象方法
}
//微信登录类 实现了ILogin接口
class WeiXinHttpRequest implements ILogin {
getUserInfo(): string { //实现接口中的方法
return "用户信息:微信的用户信息";
}
login(): void { //实现接口中的方法
console.log("执行微信登录了");
}
}
//QQ登录类 实现了ILogin接口
class QQHttpRequest implements ILogin {
getUserInfo(): string { //实现接口中的方法
return "用户信息:QQ的用户信息";
}
login(): void { //实现接口中的方法
console.log("执行QQ登录了");
}
}


