TypeScript——类类型变量(类变量指向该类的对象、父类变量指向子类对象、类型断言、Object变量)

目录

类类型变量

 一、类变量指向该类的对象

二、父类变量指向子类对象

三、类型断言

四、Object变量


类类型变量

class Person { 
	//脱衣服
	private disrobe() {
		//.....
	}
	// 穿衣服
	private dress() {
		//.....
	}
	//洗操
	public takeAbath() {
		this.disrobe();
		console.log("洗澡了");
		this.dress();
	} 
	//睡觉
	public sleep() {
		this.disrobe();
		console.log("睡觉了");
		this.dress();
	}
	public eat() {
		console.log("吃东西了...");
	}
} 

class Boy extends Person {
	static eat() {
		super.eat();
		console.log("别忘记了做好看的吃像...")
	}
	static birth() {
		console.log("生...");
	}
}

 一、类变量指向该类的对象

类也是一种自定义类型,用于指向该类对象,  类变量也可以赋值为null或undefined

let person1:Person = new Person();
person1.eat(); 

let boy1: Boy = new Boy();
boy1.eat();

扫描二维码关注公众号,回复: 14523509 查看本文章

二、父类变量指向子类对象

父类变量可以指向子类对象,指向子类的子类的对象也可以,

比如父类是"人(Person)",子类是"男孩(Boy)",因为男孩本就是人,所以可以用人指向它, 只是男孩对象被人指向后,只把男孩当人看待,不当男孩看待. 以当前示例为例,对于let person2: Person = new Boy();而言。 person2只能访问Person类中的成员,不能访问Boy中的成员

let person2: Person = new Boy();
person2.eat();//执行了父类Person中的eat方法 
person2.sleep();//执行了父类Person中的sleep方法 
// person2.birth();错,因为不能把person2当作Boy看待,所以不能访问Boy中的成员

三、类型断言

当一个父类类型变量指向子类对象时,可以通过”类型断言“ 把该变量强制转换成子类类型变量

let person: Person = new Boy();
let boy = <Boy>person;//类型断言
//let boy = person as Boy;
boy.sleep();
boy.eat();

当父类类型变量指向间接子类对象时,该变量可以类型断言成子类的父类类型,断言成什么类,就只能当作该类的对象访问成员了。

如:  

A extends B,   B extends C,  C extends D,  D extends F;
let obj1: F = new A();
let obj2 = <C> obj1;
//obj2可以说部C对象能访问的成员

四、Object变量

 Object是一切类的父类,所以可以指向一切对象。

A extends B,   B extends C,  C extends D,  D extends F;
let obj1:Object = new A();
let obj2 = <C> obj1;
//obj2可以说部C对象能访问的成员

猜你喜欢

转载自blog.csdn.net/qq_52301431/article/details/127046867