类:描述了所创建的对象共同的属性和方法。
一、定义方式:
class class_name {
// 类作用域
}
定义类的关键字class,后面紧跟类名,可以包含字段、构造函数、方法。
例如:
创建ff类
// class ff{
// }
二、创建类的数据成员
class Car {
eng : string;
constructor(eng:string){
this.eng = eng
}
disp():void {
console.log("发布 : "+this.eng)
}
}
三、创建实例化对象;
1)、语法:
var object_name = new class_name([ arguments ])
2)、类实例化时会调用构造函数;
例如:
var obj = new Car("Engine 1")
3)、类中的字段属性和方法可以使用 . 号来访问;
// 访问属性
obj.field_name
// 访问方法
obj.function_name()
例如:
class Car {
// 字段
eng : string;
// 构造函数
constructor(eng : string){
this.eng = eng;
}
// 方法
dis() : void {
console.log(this.eng)
}
}
// 创建对象
let obj = new Car('什么最美,太平世界最美!');
// 访问字段
console.log(obj.eng); //什么最美,太平世界最美!
// 访问方法
obj.dis() //什么最美,太平世界最美!
4)、类的继承:在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。
类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。
TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。
语法:
class child_class_name extends parent_class_name
例如:
class Father{
Str : string;
constructor(s : string){
this.Str = s;
}
}
class Son extends Father{
dis() : void{
console.log(this.Str)
}
}
let obj = new Son('规划局');
console.log(obj.Str);
obj.dis()
子类只能继承一个父类,TypeScript 不支持继承多个类,但支持多重继承;
例如:
class root {
str : string
}
class chlid extends root{}
class leaf extends chlid {}
let obj = new leaf();
obj.str = '吴刚'
console.log(obj.str) //吴刚
5)、继承类的方法重写:子类可以对父类的方法重新定义;
其中 super 关键字是对父类的直接引用,该关键字可以引用父类的属性和方法。
例如:
class Fa{
dop():void{
console.log('父类继承方法') //父类继承方法
}
}
class Son extends Fa{
dop():void{
super.dop(); //调用父类的函数
console.log('子类的方法') //子类的方法
}
}
let obj = new Son();
obj.dop()
6)、static关键字:用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。
例如:
class stat {
static num : number;
static dis():void{
console.log('num的值:'+stat.num);
}
}
stat.num = 78 // 初始化静态变量
stat.dis() // 调用静态方法
7)、instanceof运算符:用于判断对象是否是指定的类型,如果是返回 true,否则返回 false。
例如:
class fa{}
class son{}
let obj = new fa();
let isfa = obj instanceof fa;
console.log("obj 对象是 fa 类实例化来的吗?"+isfa); //obj 对象是 fa 类实例化来的吗?true
8)、访问控制修饰符:访问控制符用来保护对类、变量、方法和构造方法的访问;支持 3 种不同的访问权限。public、protected、private
public(默认):公有,可以在任何地方被访问。
protected : 受保护,可以被其自身以及其子类和父类访问。
private : 私有,只能被其定义所在的类访问。
例如:
class fa{
public str : string = '吴刚'
private str1 :string = '岳秀清'
protected str2 : string = '吴与卿'
}
let obj = new fa();
console.log(obj.str) //吴刚
// console.log(obj.str1) //受保护的 str1 编译错误
// console.log(obj.str2) //私有的 str2 编译错误
9)、类和接口:类可以实现接口,使用关键字 implements,并将 interest 字段作为类的属性使用。
例如:
interface fa{
str : string
}
class son implements fa{
str : string
rebate : number
constructor (str :string,rebate:number){
this.str = str
this.rebate = rebate
}
}
let obj = new son('dd',78);
console.log('字符串'+obj.str,'number'+obj.rebate) //字符串dd number78
网友评论