c++和java中关于如何调用父类方法和子类方法的辨析
2013-10-25 21:38
639 查看
首先观察下面两个程序(分别使用vc6.0和myecllipse10测试)
以上两个程序都有一个父类A,以及子类B,两个类中都有f()方法。
可以发现在c++中,函数调用是根据函数前面指针的类型决定的(p的类型),
java是根据p所指的对象的类型(p = new ?())来决定的。
以后写c++中,如果父类指针要调用子类方法,切记要进行强制类型转换。
一起学习,一起进步,欢迎访问我的博客:http://blog.csdn.net/wanghao109
#include <iostream> using namespace std; class A { public: void f() { cout<<"class A "<<endl; } }; class B : public A { public: void f() { cout<<"class B "<<endl; } }; void main() { A* p; p = new A(); p->f();//class A p = new B(); p->f();//class A p = new B(); ((B*)p)->f();//class B B* b; //b = new A();//compile error }
class A{ void f(){ System.out.println("class A"); } } class B extends A{ void f(){ System.out.println("class B"); } } public class Test { public static void main(String[] args) { A p = null; p = new A(); p.f();//class A p = new B(); p.f();//class B //B b = (B) new A(); //Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B } }
以上两个程序都有一个父类A,以及子类B,两个类中都有f()方法。
可以发现在c++中,函数调用是根据函数前面指针的类型决定的(p的类型),
java是根据p所指的对象的类型(p = new ?())来决定的。
以后写c++中,如果父类指针要调用子类方法,切记要进行强制类型转换。
一起学习,一起进步,欢迎访问我的博客:http://blog.csdn.net/wanghao109
相关文章推荐
- 关于C++中子类调用父类方法的一个问题
- java中关于子类实例化时调用父类无参构造方法的问题
- 子类调用父类方法:c++和java的不同
- 关于C++中子类调用父类方法的一个问题
- JAVA基础 -从父类的引用如何调用子类中独有的方法
- C++和JAVA中一些区别,包括指向子类的引用会调用谁的方法,子类构造函数自动调用父类构造函数时,父构造会调用的谁方法
- C++关于子类调用父类的构造方法的问题
- c++与java中子类中调用父类成员的方法
- java中如何让一个子类不能调用从父类继承的方法
- 关于Java中子类调用父类方法
- java子类如何调用父类变量和方法
- JAVA如何调用C/C++方法
- 在java中父类调用子类中的方法
- java基础:父类与子类之间变量和方法的调用
- 关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
- JAVA如何调用C/C++方法
- 关于子类调用父类构造方法的一点点 疑惑
- java中子类继承父类方法及调用规则
- Java对象初始化步骤&&子类继承父类后变量与方法调用情况
- java基础:父类与子类之间变量和方法的调用