实例方法(Instance Method)顾名思义就是只能在实例对象中运行的方法。
class Circle {
constructor(radius) {
this.radius = radius;
};
draw() {
console.log('draw');
};
}
比如例子中的 draw()
,只能这样调用:
const c = new Circle(1)
c.draw()
而静态方法(Static Method)是类的方法,不针对特定对象。
我们使用 static
关键字声明静态方法:
class Circle {
constructor(radius) {
this.radius = radius;
};
// 实例方法
draw() {
console.log('draw');
};
// 静态方法
static parse() {
console.log('parse')
}
}
调用静态方法不需要创建实例,直接类名+方法名即可:
Circle.parse()
子类为什么不能重写父类的静态方法?
当然不能,所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。
专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(楼下说的可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写),重载,继承。