关于继承接口的疑问

来源:3-12 接口 -类类型+继承接口+混合类型+接口继承类

EdonPlus

2019-07-30

class Contorl {
private state: any
}
interface selecetableContron extends Contorl {
select()
}
这样写是为了selecetableContron这个接口增加了一个限制:要有state属性,对吗?
那么为什么不像下面这样写?
interface selecetableContron {
state:any
select()
}
这样子我新建一个TextBox类,然后去继承selecetableContron的时候,也规定了这个类要有state属性与select方法啊
class TextBox implements selecetableContron {

}

请问这两者的区别是什么呢

写回答

1回答

ustbhuangyi

2019-07-30

课程的例子是为了演示接口继承类,仔细品读一下下面这段话:
当接口继承了一个类类型时,它会继承类的成员但不包括其实现。 就好像接口声明了所有类中存在的成员,但并没有提供具体实现一样。 接口同样会继承到类的 private 和 protected 成员。 这意味着当你创建了一个接口继承了一个拥有私有或受保护的成员的类时,这个接口类型只能被这个类或其子类所实现(implement)。

所以例子中 interface selecetableContron extends Contorl ,也就意味着接口 selecetableContron 继承了 Control 类,也继承了其私有成员 state。

你的写法并没有把  state 作为类私有成员的功能。

0
1
EdonPlus
非常感谢!明白了
2019-07-30
共1条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程