您的位置:首页 > 编程语言 > Java开发

JAVA:重载overload与覆盖(重写)override的区别

2010-09-27 13:19 591 查看
JAVA中的重载overload:

只要是一个类以及其父类里有的两个函数有相同的名字但是不同的参数列表(包括参数类型,参数个数,参数顺序3项中的一项或多项)。重载可以在单个类或者两个具有继承关系的类中出现。是实现类的多态性的一种重要方式。

JAVA中的覆盖override:

覆盖只会在类继承的时候才会出现,覆盖要求两个函数的名字和参数列表都完全一样。

覆盖override的注意事项:

1. 对于父类中的静态函数不可以覆盖。

2. 重写的方法不能降低父类方法的"可见度"。

3. 不能抛出新的异常或者父异常。

如下例:

class A{

   static void m1(){System.out.println("父类A的方法m1");}

   void m2(){}

//   int m2(){}//错误,不能重载m2,参数列表一样

   public void m3(int a){}

}

class B extends A{

//   void m1(){}//不能重写A的m1为非静态方法

   static void m1(){System.out.println("重写(Override)父类A的方法m1");}//重写静态方法

//   private void m3(int a){}//重写错误,不能重写A的m3,因为降低了m3的可见性

   void m2(){}//正确,重写父类A的m2,参数列表和返回值都一样

   public void m3(){}//正确,重载父类A的m3,参数列表不同

  

   void m4(){}

   void m4(int a){}//正确,重载B的m4

   void m5(double b){

        System.out.println("Double Method "+b);

        }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java class