超载(overloading)和在java中重写(overriding in java)的区别

面向对象编程(OOP)是软件开发中的一个主要范式。它是一种使用类和对象设计程序的方法。班级就是蓝图。它描述了对象中应该包含的内容。或者应该定义对象的属性。因此,对象是类的实例。这些对象与其他对象通信。OOP的一个主要概念是多态性。它是一个对象以多种方式表现的能力。多态性分为重载和重写两部分。本文将在Java中讨论这两者之间的区别。Java中重载和重写之间的关键区别在于,重载是使用不同的实现创建多个...

关键区别——java中重载与重写

面向对象编程(OOP)是软件开发中的一个主要范式。它是一种使用类和对象设计程序的方法。班级就是蓝图。它描述了对象中应该包含的内容。或者应该定义对象的属性。因此,对象是类的实例。这些对象与其他对象通信。OOP的一个主要概念是多态性。它是一个对象以多种方式表现的能力。多态性分为重载和重写两部分。本文将在Java中讨论这两者之间的区别。Java中重载和重写之间的关键区别在于,重载是使用不同的实现创建多个同名方法的能力,重写是为超类中已经存在的子类方法提供一个实现。

目录

1. 概述和主要区别
2. Java中的重载是什么
3. Java中的重写是什么
4. Java中重载和重写的相似性
5. 并排比较——以表格形式在Java中重载与重写
6. 摘要

什么是java中的重载(overloading in java)?

重载是使用不同的实现创建同名的多个方法的能力。请参阅下面的Java代码。

超载(overloading)和在java中重写(overriding in java)的区别

图01:Java程序,解释使用不同数量的参数重载

根据上面的程序,类A包含两个同名的方法。第一和法有两个参数。第二和法有三个参数。当创建类型A的对象并调用sum(2,3)时,它将使用两个参数sum(inta,intb)调用sum方法并返回5。当创建一个类型为A的对象并调用sum(2,3,4)时,它将使用三个参数调用另一个sum方法,即sum(inta,intb,intc)并返回9。

方法名称相同,但参数数目不同。可以观察到同一物体的行为不同。这个概念被称为重载。它也被称为静态绑定或编译时间多态性。

也可以使用不同的数据类型重载。请参阅下面的Java代码。

超载(overloading)和在java中重写(overriding in java)的区别

图02解释了Java程序重载的不同数量

根据上面的程序,类由两个同名的方法组成。sum(inta,intb)方法接收两个整数值。sum(double a double b)接收两个double值。当创建类型A的对象并调用sum(2,3)时,它将调用sum(inta,intb)并返回值5。当调用sum(3.4,5.6)时,它将调用sum(double a double b)并返回值9.0。在本例中,方法具有相同的名称,但变量类型不同。这也是超载。

什么是在java中重写(overriding in java)?

在Java中,可以使用已经存在的类构建子类。与其从头创建新类,还可以使用已经存在的类的属性和方法。现有类是超类,派生类是子类。当子类为已经在超类中的方法提供实现时,它被称为重写。请参阅以下Java程序。

超载(overloading)和在java中重写(overriding in java)的区别

图03:重写的Java程序

根据上面的程序,类A有一个display()方法。类B是从类A扩展而来的,因此类B可以访问类A的属性和方法。类B具有具有特定实现的方法display()。当创建类型为A的对象并调用display方法时,它将给出输出B。即使类A有display方法,它也会被类B display方法重写。子类正在实现超类中已存在的方法。

这个概念是一种多态性,称为覆盖。它也被称为后期绑定、动态绑定、运行时多态性。

超载(overloading)和在java中重写(overriding in java)的共同点

  • 两者都是多态性的类型。
  • 在重载和重写中,方法具有相同的名称。

超载(overloading)和在java中重写(overriding in java)的区别

Java中的重载vs
Java中的重载是指使用不同的实现创建同名的多个方法的能力。 Java中的重写是为超类中已经存在的方法提供子类方法中的特定实现。
参数
在重载中,方法具有相同的名称,但参数数目不同或参数类型不同。 在重写中,方法具有相同的名称,并且参数必须相同。
主题
类中发生重载。 重写发生在具有继承关系的两个类中。
同义词
重载称为编译时间多态性。 重写称为运行时多态性。

总结 - 超载(overloading) vs. 在java中重写(overriding in java)

多态性是面向对象编程中的一个主要概念。它提供了一个对象以多种方式表现的能力。这可以是重载或重写。重载是编译时多态性,重写是运行时多态性。它们在软件应用程序开发中很有用。重写和重载之间的区别在于,重载是创建具有不同实现的同名多个方法的能力,重写是为超类中已经存在的方法在子类方法中提供特定的实现。可以在Java中实现重载和重写。

下载pdf重载vs java重写

你可以下载这篇文章的PDF版本,并按照引文说明离线使用。请在此下载PDF版本Java中重载和重写的区别

引用

  • 发表于 2020-10-19 21:20
  • 阅读 ( 362 )
  • 分类:IT

你可能感兴趣的文章

压倒一切(overriding)和c中的过载#(overloading in c#)的区别

...将全部打印Shape类的显示方法的内容。 什么是c中的过载#(overloading in c#)? 在重载中,多个方法具有相同的名称,但具有不同的参数。参数可以是不同类型的。这些方法也可以有不同数量的参数。方法重载发生在同一个类中。重...

  • 发布于 2020-10-18 23:50
  • 阅读 ( 213 )

等于(equals)和java中的hashcode(hashcode in java)的区别

...算符。两个对象引用只有在指向同一对象时才相等。可以重写equals方法。 图01:Java程序与equals 声明System.out.println(s1.equals(s2))将给出错误的答案,因为s1和s2指的是两个不同的对象。与声明相似,System.out.println(s1==s2); 声...

  • 发布于 2020-10-19 00:40
  • 阅读 ( 197 )

睡觉(sleep)和在java中等待(wait in java)的区别

...wait都是在Java中实现多线程时可以使用的方法 睡觉(sleep)和在java中等待(wait in java)的区别 Java中的睡眠与等待 sleep方法使当前线程暂停执行指定的毫秒数,这取决于系统计时器和调度程序的精度和准确性。 wait方法使...

  • 发布于 2020-10-19 03:04
  • 阅读 ( 270 )

打破(break)和在java中继续(continue in java)的区别

... Java中的break和continue都用于更改循环的执行。 打破(break)和在java中继续(continue in java)的区别 Java中的break vs continue break是一种循环控制结构,它使循环终止并将程序控制传递给循环的下一个语句。 continue是一个循环控...

  • 发布于 2020-10-19 05:44
  • 阅读 ( 208 )

静止的(static)和java期末考试(final in java)的区别

...任何对象使用的类成员,而final用于声明常量变量或无法重写的方法或无法继承的类。 目录 1. 概述和主要区别 2. Java中什么是静态的 3. Java中的final是什么 4. Java中static和final的相似性 5. 并排比较-静态和最终的Java表格形式 6. 摘要...

  • 发布于 2020-10-19 07:48
  • 阅读 ( 315 )

最终决赛(final finally)和用java完成(finalize in java)的区别

...含义。final是一个关键字,用于防止更改变量、避免方法重写和避免扩展类。最后是异常处理中的一个块,无论是否引发异常,它都将执行。finalize是一个方法,由垃圾回收器在完全销毁对象之前调用。这就是Java中final和finalize的...

  • 发布于 2020-10-19 15:24
  • 阅读 ( 236 )

多态性(polymorphism)和oop中的继承(inheritance in oop)的区别

...多种行为。多态性可分为两类。它们正在过载和覆盖。 超载 参考下面用Java编写的程序。 图01:过载 根据上述程序,创建一个类型为A的对象。打电话时目标金额();它将给出与sum()方法相关的输出。当呼叫目标金额(2,3)...

  • 发布于 2020-10-19 21:16
  • 阅读 ( 547 )

用java编写多线程代码的4种方法

...eepFor; public MyThread(int sleepFor) { this.sleepFor = sleepFor; } @Override public void run() { System.out.printf("[%s] thread starting", Thread.currentThread().toString()); try { Thread.sleep(this.sleepFor); } catch(InterruptedException ex) {} System.out.printf("[%s] thread ...

  • 发布于 2021-03-14 04:48
  • 阅读 ( 175 )

超载(overloading)和覆盖(overriding)的区别

过载与覆盖 重载和重写都是大多数编程语言的特性。重载是一种特性,它允许在同一个类中创建几个具有相同名称的方法,但在函数的输入类型和输出类型方面彼此不同。方法重载通常与在函数调用中强制类型检查的静态编程...

  • 发布于 2021-06-23 10:08
  • 阅读 ( 176 )

抽象类(abstract class)和java接口(interface in java)的区别

...个主要区别是前者比后者快一点,因为在Java中调用任何重写的方法之前,通常都会在接口中进行搜索。 Java中抽象类和接口的“Final Variables”——接口中声明的变量默认为Final,而抽象类可能包含也可能不包含非Final变量。 抽象...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 301 )
gufk62842
gufk62842

0 篇文章

相关推荐