【发布时间】:2014-07-19 19:57:51
【问题描述】:
为了更好地理解abstraction,我浏览了许多文章和一些 Stack Overflow 问题,但有点困惑。这是我一直在阅读的内容:here
抽象是“代表本质特征而不 代表背景细节。”抽象让你专注于 对象做什么而不是它如何做。
给出的代码:
abstract class MobilePhone
}
public void Calling();
public void SendSMS();
}
public class Nokia1400 : MobilePhone
{
}
public class Nokia2700 : MobilePhone
{
public void FMRadio();
public void MP3();
public void Camera();
}
我的问题是,当我们继承 abstract class 时,我们不是在子类中实现细节吗?
call() 和 sendSms() 在超类型中没有任何实现,所以当我们在子类中实现它时,我们也应该知道背景细节。那么抽象在这个例子中实际上是如何工作的呢?
编辑:如果你来这里寻求帮助,这些人给出了最佳答案:Complexity Sergey Berezovskiy
【问题讨论】:
-
在您的示例中,simplay 表示 Calling 和 SendSms 是每部手机中 MobilePhone 的核心功能,它是可用的,因此当您的手机发生变化时,您无需编写调用和 sendmsg 的方法只能从抽象类中使用它,没有人可以更改它,因为抽象不允许创建对象
-
@DhavalPatel 和实现细节将在这两个方法中提供对吧?
-
是的,你必须在你的抽象类中实现这两个方法,因为如果你是非抽象方法,那么你必须有一个实现。基本抽象去掉代码冗余,不用一遍遍写代码
标签: c# class oop inheritance