接口与抽像类的疑惑

stevenjin 2019-12-08 03:10:16
如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单易行的方法来控制组件版本。通 过更新基类,所有继承类都随更改自动更新。另一方面,接口一旦创建就不能更改。如果需要接口 的新版本,必须创建一个全新的接口。

关于上面这段话不理解。
1.我抽像类中加了一个方法,继承类并不会自动更新呀!
2.接口中添加新的成员后,继承的类必须添加新的方法。但这换到抽像类中也一样啊,都必须有实现。
...全文
78 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2019-12-09
  • 打赏
  • 举报
回复
这话,在以前是对的。现在就不正确了。 不用太过纠结。 以前的意思是, 因为你在抽象类可以有实现,所以版本更新,那在抽象类,新增一个方法(非抽象的),然后实现。 那么派生类,都继承了。不需要改动。 但是接口上都是抽象的,没有实现的。所以你在原来接口上新增,是具有破坏性的。 第一代的实现类,都要实现它。那么这就很糟糕了。 但是现在 出现了 默认接口实现。 所以这个问题,已经不是问题了。
Eason0807 2019-12-09
  • 打赏
  • 举报
回复
1、你在抽象基类当中更新了一个方法,除非他的继承类中重写了这个方法,否则继承类当然也继承了你更新后的方法,即使继承类重写了基类的方法,一般我们在override重写基类虚方法的时候,都会先调用一下基类的这个方法,比如base.Method(); 2、接口当中只能定义方法,而没有具体实现,所以你更新接口基本都是添加了新的方法、新的属性、或更新某个方法的签名;这就意味着所有继承这个接口的类都需要重写; 最后,抽象类中只有你定义的抽象方法在继承类中必须实现,而抽象类中你可以定义虚方法、普通方法;虚方法继承类 可以直接用,可以override重写,普通方法直接就可以用

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧