TS-修饰符 与 static

TS-修饰符 与 static

1.static: 用于 修饰 变量 或者方法,表示 静态的

  • 当类 中 的 方法 被 声明 为 static 时,其实例化 对象 不可 调用 该方法,只有 类 本身 ,以及 其子类 可以 调用。
    eg:
class A {
	name:string;
	age:number;
	constructor(name:string,age:number){
		this.name = name;
		this.age = age;
	}
	eat(){
		console.log('测试');
	}
	static eat2(){
		console.log('测试2');
	}
}
let a = new A('zhangsan',8);
a.eat();//   '测试'
a.eat2();// error
A.eat2();//  '测试2'
class B extends A {
	constructor(name:string,age:number){
		super(name,age);
	}
}
let  b = new B('lisi',9);
b.eat();// '测试'
b.eat2();// error
B.eat2();// '测试2'

2.public: 修饰 属性 和 方法 公共的,任何地方 都可以访问

  • 不写修饰符 默认 就是 public

3.private: 修饰 属性 和 方法 私有的 , 只能在 本类 内部使用,其余地方 均不可以 访问 实例化对象 和 类 也不可 访问。(子类也不行)

*eg:

class A {
	name:string;
	age:number;
	constructor(name:string,age:number){
		this.name = name;
		this.age = age;
	}
	private eat(){
		console.log('测试');
	}
	eat2(){
		this.eat(); // '测试'
	}
}
var  a = new A('zhangsan',8);
a.eat(); // error
A.eat(); // error

4.protected: 修饰 属性 和 方法 被 保护的, 被类 内部 以及 其 子类 内部 非 static 方法 内 可 访问,实例化 对象 和 类 也不可访问

class A {
	name:string;
	age:number;
	constructor(name:string,age:number){
		this.name = name;
		this.age = age;
	}
	protected eat(){
		console.log('测试');
	}
	eat2(){
		this.eat(); // '测试'
	}
	private eat3(){
		this.eat(); // '测试'
	}
	static eat4(){
		this.eat(); //  error
	}
}
var  a = new A('zhangsan',8);
a.eat(); // error
A.eat(); // error

class B extends A {
	constructor(name:string,age:number){
		super(name,age);
	}
	eat5(){
		this.eat(); // '测试'
	}
	private eat6(){
		this.eat(); // '测试'
	}
	protected eat7(){
		this.eat(); // '测试'
	}
	static  eat8(){
		this.eat(); //  eror
	}
}
let b = new B('李四',9);
b.eat(); //error
B.eat(); // error

发布了96 篇原创文章 · 获赞 64 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41709082/article/details/96479594