面向对象:TS和java一样都是面向对象的思想(oop)
面向对象概念其实很简单,万物皆是对象,面向对象编程就是所有的东西都是对象封装起来的,需要什么直接在对象里面调,例如ts中的windows对象....
面向对象的代码示例
class Person {
//静态属性,可以直接调用 readonly 只读属性无法修改
static readonly age:number = 18;
//实例属性,必须创建对象后使用不加readonly就可读可写
name:string = "孙悟空";
age:number = 18;
//实例方法
sayhello(){
console.log("hello")
}
//静态方法
static personSayhello(){
console.log("hello")
}
}
对象中分为属性和方法。
拿人举例,人有眼睛鼻子....这些就是属性,人会吃饭、睡觉这些就是方法。
属性分为静态属性和实例属性,静态可以直接调用,实例必须创建出对象才能使用。
方法和对象类似。
对象又分为抽象对象和对象。方法也是如此看代码
//抽象类,不能被创造,只能被继承,可以添加抽象方法
abstract class Animal{
name:string;
age:number;
constructor(name:string,age:number){
this.name = name;
this.age = age;
}
//创建抽象方法,子类必须重写抽象方法
abstract run():void;
abstract sayhello():void;
}
然后就是接口,其实和抽象对象类似
interface myInterface{
name:string;
sayhello():void;
}
对象可以被继承,里面的方法可以被重写,例如
class cat extends Animal{
//super的用法,调用子类构造方法必须先构造出父类的构造方法
sex:number;
constructor(sex:number , name:string, age:number){
super(name,age);
this.sex = sex;
}
//方法的重写
run(){
console.log(this.name,"在叫");
}
sayhello(){
console.log("喵喵喵")
}
}
接口必须被实现才能使用
class myInterface implements myInterface{
name: string;
constructor(name:string){
this.name=name
}
sayhello(): void {
console.log("666")
}
}
泛型,当不确定类型时候可以用,比any好
//定义函数或者类,如果类型不明确时候就可以用泛型
function fn<T>(a:T):T{
return a;
}
TS类容到此结束,熟悉java的这节可以不看