C++与Java的区别(一):重定义

来源:互联网 发布:网络正规兼职写手 编辑:程序博客网 时间:2024/06/11 20:53

重定义:子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) 。

例子:

//问题在C++中描述

 #include<iostream>using namespace std;class A {public: void func() {cout << "A::func";}};class B :public A {public: void func(int a) {cout << "B::func";}};int main(){B* a = new B();a->func();  //c++中会出问题;;system("pause");}


由于类B中的func函数名会隐藏基类A的func,所以不能直接调用A中的func。

可以a->A::fun()进行调用。

//***************************************************************************************************************************

//同样的问题java中描述

public class Redefining {public static void main(String[] args) {class A {public void func() {System.out.println("A::func");}}class B extends A {public void func(int a) {System.out.println("B::func");}}B a=new B();//不会出问题,会输出“A::func”.a.func();}}


在Java中,不会隐藏,相当于重载。

如有问题,请指正。

0 0