java中的“虚函数”
本帖最后由 sunmoon631 于 2011-05-28 17:58:40 编辑
java中是否有“虚函数”,请教高人讲解一下:
我的理解是这样
C++ Java
虚函数 --------
纯虚函数 -------- 抽象方法
抽象类 -------- 抽象类
虚基类 -------- 接口
有高人能详细的讲解一下,很感谢。
------最佳解决方案--------------------从C的角度来考虑,那么java里除了抽象方法(或接口)外,都是虚函数
如果你非要这么一一对等,那么C的虚方法 -- java的一般方法
以前有人讨论过这个问题,把链接发给你,可以参考一下
http://topic.csdn.net/u/20110223/13/db22aa47-e910-4a1b-bd0d-4cf53523f360.html
------其他解决方案--------------------
有没有是看问题的角度决定的,java语言肯定没有虚函数这个概念。但是实现上可以和c++的虚函数类比下。再有,可以看看jvm指令集中的invokevirtual,virtual这个名字……
------其他解决方案--------------------无论是java语言规范还是java虚拟机规范中都找不到“虚函数”一词,所以,你这个所谓的“高手”,可能是个c++高手,肯定not java
------其他解决方案--------------------c++中默认是静态绑定,想要运行时绑定,就得告诉编译器(声明为virtual)
java中默认是动态绑定,想要静态绑定,就告诉编译器(声明为final)
------其他解决方案--------------------
这里还要注意一下final和C的非虚函数还是有区别的,final就意味着该方法不能被子类重写,而C的非虚函数是可以被子类重写的。其实java和C是没有也没必要一一对等,只能说某些实现上相同或相似,关键是理解每个所谓的概念就好了。
------其他解决方案--------------------这样比较没有任何意义
------其他解决方案--------------------java不能总去和c++ 去比较,只要能理解就行了
------其他解决方案--------------------这样比较没有意义,只能说明LZ没有理解面向对象
------其他解决方案--------------------在c++中 不是只有使用指针才有多态吗
------其他解决方案--------------------java中没有虚函数一说。。。不用再抠了
------其他解决方案--------------------虚基类和接口关联比较牵强。
------其他解决方案--------------------有多态,多态内有虚方法
------其他解决方案--------------------个人觉得非要类比的话,java中只要是非final类型的方法都可以理解为虚函数。
都是可以被覆盖的。
------其他解决方案--------------------不要想着啥都去找个对应的东西,在java中真还没听过虚函数这种说法
------其他解决方案--------------------