对比C++与Java中的函数重载、覆盖、和隐藏
作者:网络转载 发布时间:[ 2014/11/25 13:05:00 ] 推荐标签:Java C++ 函数重载
在Java中
1.函数的重载
在Java中函数的重载 可以发生在基类和派生类之间 同样要求函数名相同函数,参数列表不同,返回值类型可以相同可以不相同
1 class BaseClass
2 {
3 public static void display(int i){System.out.println("Baseclass");}
4 }
5 public class ThisClass extends BaseClass
6 {
7 public static void display(){System.out.println("ThisClass");}
8 public static void main(String[]args)
9 {
10 display();//调用派生类的函数
11 display(0);//调用基类的函数
////////////////////////////////////////////////////////////
此处并没有发生覆盖和隐藏 与C++不同
12 }
13 }
此例中基类BaseClass 中的void display(int i);与派生类ThisClass中的void display();构成了重载
2.函数的覆盖
Java中函数的覆盖要求基类与派生类的 函数名、参数列表完全相同。示例如下:
1 public class PrivateOverride
2 {
3 public void f(){System.out.println("private f()");}
4 //private void f(){System.out.println("private f()");}
5 public static void main(String[]args)
6 {
7 PrivateOverride po=new Derived();
8 po.f();//输出public f()//表明派生类函数覆盖了基类的函数
9 }
10
11 }
12 class Derived extends PrivateOverride
13 {
14 public void f(){System.out.print("public f()");}
15 }
3.上例中 如果把基类中 f()的访问属性置为private,则输出 private f() 得出的结论是只有非private方法才可以被覆盖

sales@spasvo.com