方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) 。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了.
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载.
1. Override 特点
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
2.Overload 特点
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
Overrride实例
class A{
public int getVal(){
return(5);
}
}
class B extends A{
public int getVal(){
return(10);
}
}
public class override {
public static void main(String[] args) {
B b = new B();
A a= (A)b;//把 b 强 制转换成A的类型
int x=a.getVal(); //打印10,这里还有一个上转型的问题(见http://blog.csdn.net/gnuhpc/archive/2009/11/05/4773224.aspx)
System.out.println(x);
}
}
Overload实例
package com.guonan;
//Demostrate method voerloading.
class OverloadDemo {
void test(){
System.out.println("NO parameters");
}
void test(int a){
System.out.println("a:"+a);
}//end of Overload test for one integer parameter.
void test(int a, int b){
System.out.println("a and b:"+a+" "+b);
}
double test(double a){
System.out.println("double a:"+a);
return a*a;
}
}
class Overload{
public static void main(String[] args) {
OverloadDemo ob = new OverloadDemo();
double result;
ob.test();
ob.test(10);
ob.test(10, 20);
result = ob.test(123.25);
System.out.println("Result of ob.test(123.25):"+result);
本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2009/1127/18232.php
分享到:
相关推荐
### Override与Overload的区别 在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的重复使用,但是其本质含义、作用以及应用场景有着明显的区别。 ##...
Override Overload Overwrite 马克-to-win Java视频
Delphi面向对象编程之overload与override Delphi面向对象编程中,overload和override是两个非常重要的概念,它们都是面向对象编程的基础概念。本文将详细介绍overload和override的概念、应用场景及实现方法。 一、...
### Overload和Override详解 #### 一、概念概述 在面向对象编程中,尤其是在Java语言中,`Overload`(重载)和`Override`(重写)是两个非常重要的概念,它们帮助开发者更好地组织代码并提高代码的复用性和灵活性...
### Overload 和 Override 的区别 在面向对象编程中,`overload`(重载)与`override`(重写或覆盖)是两个重要的概念。它们虽然只有一字之差,但在实际应用中却有着本质的区别。 #### Overload(重载) 重载指的...
Overload和Override Overload是方法的重载,指的是在同一个类中定义多个同名的方法,但这些方法的参数列表不同。Override是方法的重写,指的是在子类中重新定义父类中的方法。Overload方法可以改变返回值类型,而...
函数的使用、short 型变量的赋值、sleep() 和 wait() 的区别、数组和 String 的 length 属性、Overload 和 Override 的区别等。 final、finally、finalize 在 Java 中,final、finally、finalize 三个关键字经常被...
十一、Overload 与 Override Overload 是方法的重载,指的是在同一个类中具有相同名称但不同参数列表的方法。Override 是方法的重写,指的是在子类中对父类中的方法进行重新实现。Overload 的方法可以改变返回值...
Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...
根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...
在C++编程语言中,Overload(重载)、Override(覆盖)和Hide(隐藏)是三个重要的概念,它们涉及到函数的多态性、继承和作用域。这些特性使得C++能够实现灵活的代码复用和面向对象的设计。 **1. Overload(重载)*...
在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;...
public class Override { public static void main(String[] args) { B b = new B(); A a = (A) b; // 类型转换 int x = a.getVal(); System.out.println(x); // 输出10 } } ``` 总结来说,**重载**关注的...
总的来说,`override` 用于子类改变父类的特定行为,而 `overload` 则是通过不同的参数列表在同一个类中创建多个同名方法。两者都是提高代码灵活性和可扩展性的手段,但它们作用的范围和方式不同。理解并正确使用这...
在编程语言中,`override` 和 `重载(Overload)` 是两个非常重要的概念,它们分别涉及面向对象的多态性和方法的灵活性。这两个概念在Java、C#等面向对象的语言中尤为常见,但理解它们的含义和用法对于任何程序员来说...
Java重写(Override)与重载(Overload)区别原理解析 Java 编程语言中有两个重要的概念:重写(Override)和重载(Overload)。这两个概念经常被混淆,但它们具有不同的作用和特点。本文将详细地介绍 Java 中的重写和...
在编程语言中,"override" 和 "重载"(overload)是两个常见的概念,它们都与函数或方法的行为有关,但具体含义和使用场景不同。理解这两个概念对于编写多态性和灵活性的代码至关重要。 首先,我们来谈谈“重载”...