上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
谬误16 一字之别——重载就是重写
在面向对象的编程语言中,重载方法和重写方法是两个非常重要的概念,写程序时经常用到。但有一些人经常混淆这两个概念,这两个概念的名称虽然只有一字之差,但实际的含义却大不相同。下面将对这两个概念进行详细区分。
在Java语言中,重载方法是指在类中有两个或两个以上的同名方法,但各个方法中的参数类型、参数个数或顺序不同,示例代码如下:
public class Test { //一个int类型参数 public int Addition (int x){ return x + x; } //两个int类型参数 public int Addition (int x, int y){ return x + y; } //两个float类型参数 public float Addition (float x, float y){ return x + y; } //一个int类型参数和一个float类型参数 public float Addition (int x, float y){ return x + y; } //一个float类型参数和一个int类型参数 public float Addition (float y, int x){ return x + y; } }
注意
在编写重载方法时,要注意方法名的唯一性,方法签名由方法的名称、参数类型(包括顺序,按照从左到右的顺序)、参数个数及参数种类(值、引用或输出)组成。
在Java语言中,重写是指子类中含有与父类相同的方法名和参数,但是子类中的方法覆盖了父类中的方法,例如,父类的代码如下:
/** * 父类方法 * @author CHUNBIN * */ public class FatherClass { public void test (){ System.out. println ("父类中的方法"); } }
子类中未重写父类方法的代码如下:
/** * 子类 * @author CHUNBIN * */ public class SonClass extends FatherClass { public static void main (String[] args){ SonClass son = new SonClass (); son. test (); } }
执行上述代码后,程序运行的效果如图4.13所示。
图4.13 子类中未重写父类方法输出的信息
在子类中重写父类的方法,代码如下:
/** * 子类 * @author CHUNBIN * */ public class SonClass extends FatherClass { public void test (){ System.out. println ("子类中的方法"); } public static void main (String[] args){ SonClass son = new SonClass (); son. test (); } }
执行上述代码后,程序运行的效果如图4.14所示。
图4.14 子类重写父类方法后输出的信息
从上面的概念论述及程序代码的具体应用中可以看出,重载方法与重写方法是两个完全不相同的概念。