在许多现代OOP
语言中,例如Java
和C#
,引用类型都有一个通常称为Object
的基类,所有其他引用类型都从该基类继承其核心功能
这些语言还具有在所有引用类型中共享的通用.toString()
方法,因此可以轻松地从中提取数据作为字符串。
现在问题是:如果String
类是Object
的子类,Object
如何实现.toString()
方法而不会导致循环依赖?
如果A
使用B
并且B
实施A
它会导致问题,或者我完全错了吗?
答案 0 :(得分:3)
关于C#(我非常确定Java也是如此),编译器并不要求以依赖顺序提供源文件。
这意味着,与其他编译器(我相信F#编译器和gcc)不同,C#编译器允许您引用编译器尚未看到的符号(只要两种类型都在相同的集会)。
换句话说 - 是的,那里是循环依赖,但编译器会为你处理。如果你想知道编译器如何处理循环依赖,那么programmers.stackexchange
就已经问过了。