JAVA里的子类的函数不会隐藏超类里的同名函数,这点和C++不同。如果你希望重载超类里的方法,在C++里,没有“跨域重载“,你需要使用using Super::f的方法来将超类的方法的名字出现在子类的域里。
这个差异事实上是JAVA和C++在名字管理系统上的差异导致的,JAVA从语义上没有覆盖(这是为了垃圾收集器的实现),所以名字隐藏也就不会发生。所以虽然标题是讨论继承,但是事实上这个问题不是继承的问题。
JAVA的继承只有extends,相当于C++的PUBLIC继承,不过C++极少使用PUBLIC以外的继承(或者可以说那些所谓的继承不是继承)。
阅读(900) | 评论(0) | 转发(0) |