Oop 在重写的方法中调用另一个方法是否违反;取决于抽象;?

Oop 在重写的方法中调用另一个方法是否违反;取决于抽象;?,oop,Oop,我有一个带有方法print()的接口IPrintSomething 我有一个名为Printer的类,它实现了IPrintSomething接口 假设类Printer有另一个名为doTheActualPrinting() 如果我在print()方法中调用doTheActualPrinting(),这是否意味着类Printer已经知道如何打印?这是否使它不再依赖抽象IPrintSomething。如果您的具体类希望在一个方法中实现其逻辑,该方法的名称与其实现的接口不同,并且只需从接口方法调用自己的方

我有一个带有方法
print()
的接口
IPrintSomething

我有一个名为
Printer
的类,它实现了
IPrintSomething
接口

假设类
Printer
有另一个名为
doTheActualPrinting()

如果我在
print()
方法中调用
doTheActualPrinting()
,这是否意味着类
Printer
已经知道如何打印?这是否使它不再依赖抽象
IPrintSomething
。如果您的具体类希望在一个方法中实现其逻辑,该方法的名称与其实现的接口不同,并且只需从接口方法调用自己的方法,那么使用该接口的任何类都不需要知道这一点。。。因此,抽象被保留下来


另一方面,如果类调用
doTheActualPrinting()
而不是调用
print()
,那么抽象就丢失了。

从抽象的角度来看,这很好。如果您的具体类希望在一个方法中实现其逻辑,该方法的名称与其实现的接口不同,并且只需从接口方法调用自己的方法,那么使用该接口的任何类都不需要知道这一点。。。因此,抽象被保留下来


另一方面,如果类调用
doTheActualPrinting()
而不是调用
print()
,那么抽象就丢失了。

为什么
doTheActualPrinting()
的代码不能在
打印机
类的
print()
方法中?
doTheActualPrinting()
还有其他用途吗?是的,这是可能的,但在本例中,假设我要打印到不同的屏幕。所以doTheActualPrinting()会打印到控制台。然后我将有另一个方法printToGraphicalUserInterface(),它将打印到GUI。所以我不想把所有这些代码都放在print()方法中。为什么
doTheActualPrinting()
的代码不能在
Printer
类的
print()方法中?
doTheActualPrinting()
还有其他用途吗?是的,这是可能的,但在本例中,假设我要打印到不同的屏幕。所以doTheActualPrinting()会打印到控制台。然后我将有另一个方法printToGraphicalUserInterface(),它将打印到GUI。所以我不想把所有这些代码都放在print()方法中。所以如果我在接口的print()方法中编写了打印逻辑,那么这意味着类Printer不知道如何打印,但完全依赖于IPrintSomething来打印,对吗?在你的回复中,你说抽象被保留了,我想我理解了。这意味着Printer类知道如何打印,如果它是唯一一个知道如何打印的类,那么抽象仍然被保留,对吗?是的,这个想法是抽象的用户不必知道它是如何实现的。具体的实现可以做任何事情,只要用户不必知道。因此,如果我在接口的print()方法中编写了打印逻辑,那么这意味着类Printer不知道如何打印,但完全依赖于IPrintSomething来打印,对吗?在您的回复中,你说抽象被保留了,我想我能理解。这意味着Printer类知道如何打印,如果它是唯一一个知道如何打印的类,那么抽象仍然被保留,对吗?是的,这个想法是抽象的用户不必知道它是如何实现的。具体的实现可以做任何事情,只要用户不必知道。