`

[#0x0005] overload and override: 重载与覆写

    博客分类:
  • Java
EXT 
阅读更多

  overload: 重载,指在同一个class中有多个同名function的现象。
  override: 覆写,指ext class中重写base class中的同签名function的行为。
  注意,如果ext class继承了base class——假设base class中一个非private非final的work(arg list 1)方法——ext class中同样也会有work(arg list 1)方法。

  此时如果在ext class中再添加一个同名function,如work(arg list 2),则是重载行为。

  如果添加一个同签名function,即work(arg list 1),则是覆写行为。
  方法名与参数列表合称方法签名,是方法的唯一标识。return type不属于方法签名。(3月27日补充:虽然如此,覆写对return type还是有要求的,more details see [#0x000A])

  如果base class中的work(arg list 1)方法是private或是final的,那么ext class中是不会有work(arg list 1)方法的,所以无论是添加work(arg list 1)方法或是work(arg list 2)方法,是既不算重载也不算覆写的。

 

P.S. 重载并不要求有继承,同一个类中也可以有重载行为

P.S.2 静态方法没有覆写机制,如:

class Base {
	public static void print() {
		System.out.println("Base prints.");
	}
}

public class Ext extends Base {
	public static void print() {
		System.out.println("Ext prints.");
	}
	
	public static void main(String[] args) {		
		Base.print(); // Base prints.
		Ext.print(); // Ext prints.
		
		Base b = new Base();
		b.print(); // Base prints.
		
		Base b2 = new Ext();
		b2.print(); // Base prints.
		
		Ext e = new Ext();
		e.print(); // Ext prints.
	}
}

尤其需要注意的是b2,这里不像多态机制,静态方法的绑定也是静态的,引用是啥类型,就调用啥类型的静态方法。

分享到:
评论

相关推荐

    overload and override.txt的区别

    在面向对象编程中,`overload`(重载)与`override`(重写或覆盖)是两个重要的概念。它们虽然只有一字之差,但在实际应用中却有着本质的区别。 #### Overload(重载) 重载指的是在一个类中定义多个同名但参数...

    overload and override

    在面向对象编程中,尤其是在Java语言中,`Overload`(重载)和`Override`(重写)是两个非常重要的概念,它们帮助开发者更好地组织代码并提高代码的复用性和灵活性。 #### 二、Overload(重载) **定义**: - `...

    面试题java

    #### 第十五题:Overload与Override的区别 - **Overload**(重载):在同一类中,方法名相同但参数列表不同(类型、个数或顺序)的方法。 - **Override**(重写):在子类中重新定义父类的方法,方法名、参数列表...

    Delphi面向对象:overload与override[文].pdf

    Delphi面向对象编程之overload与override Delphi面向对象编程中,overload和override是两个非常重要的概念,它们都是面向对象编程的基础概念。本文将详细介绍overload和override的概念、应用场景及实现方法。 一、...

    Override-Overload

    ### Override与Overload的区别 在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的重复使用,但是其本质含义、作用以及应用场景有着明显的区别。 ##...

    Java 重写(Override)与重载(Overload).pdf

    根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...

    50个.NET面试题

    - **重载**(Overload)在同一类型中创建多个同名但参数不同的方法,提高代码复用性。 - **隐藏**(Hide)使用`new`关键字在派生类中隐藏基类中的方法,允许派生类覆盖基类方法的行为,但不会改变基类方法的实现。 ...

    Java语言开发相关单词

    ### 重载:`overload` 重载是指在一个类中可以有多个同名的方法,只要它们的参数列表不同即可。这种方法允许开发者使用相同的名称定义不同的行为。 ### 随机:`random` 随机数生成在编程中经常用到,尤其是在模拟...

    迈普2700nat+限速

    NAT(Network Address Translation)即网络地址转换,是一种用于在内部网络中使用的私有IP地址与外部网络中的公有IP地址之间进行转换的技术。它主要用于解决IPv4地址资源不足的问题,并且可以隐藏内部网络结构,提高...

    override和重载 希望对大家有帮助

    在编程语言中,`override` 和 `重载(Overload)` 是两个非常重要的概念,它们分别涉及面向对象的多态性和方法的灵活性。这两个概念在Java、C#等面向对象的语言中尤为常见,但理解它们的含义和用法对于任何程序员来说...

    java子类重写父类的方法.doc

    - 子类错误重写:`public void method(String arg, int index)` —— 错误,这实际上是重载(Overload),而非重写。 ##### 规则三:返回类型必须相同 - **解释**:子类重写父类的方法时,返回类型必须与父类方法...

    重写(override)和重载(overload)的区别

    在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...

    asp.net面试题目及答案

    #### 题目五:override与overload的区别? **答案解析:** 1. **override:** 用于重写基类的方法或属性,使得子类能够提供新的实现或行为。 2. **overload:** 用于在同一类中提供多个同名但参数不同的方法版本,...

    JAVA的重载和覆盖(论文)

    JAVA中的重载(Overload)和覆盖(Override)是面向对象编程中两个核心概念,尤其在多态性的体现上扮演着重要角色。这两者虽然在名称上相似,但在实际应用和概念理解上有着本质的区别。 ### 重载(Overload) 重载是在同...

    (学软件编程需必学的英语)第二学期英文单词汇总

    - **overload**(过载重载):在同一类中,使用相同方法名但参数不同的多个方法,提高代码复用性和可读性。 - **inheritance**(继承):面向对象编程的一个核心特性,子类可以继承父类的属性和方法,实现代码复用和...

    Java重写(Override)&重载(Overload).pdf

    Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...

    思科第四学期期末考试

    根据提供的信息,我们可以了解到这份资料主要涉及的是思科第四学期的期末考试内容,以及与之相关的额外练习题目。从给出的部分内容来看,这份考试重点涵盖了网络地址转换(NAT)的相关概念和技术,尤其是如何利用...

    override和重载的区别

    在编程语言中,"override" 和 "重载"(overload)是两个常见的概念,它们都与函数或方法的行为有关,但具体含义和使用场景不同。理解这两个概念对于编写多态性和灵活性的代码至关重要。 首先,我们来谈谈“重载”...

    Delphi面向对象编程的20条规则.pdf

    通过重载`Create`方法并传递必要的初始化参数,可以使窗体的初始化过程更加可控。例如: ```pascal public constructor Create(Text: string); reintroduce; overload; constructor TFormDialog.Create(Text: ...

Global site tag (gtag.js) - Google Analytics