浅谈java中的重载和重写的区别

目录
  • 1.重载
    • 小结:
  • 2.重写
    • 小结:
  • 总结

1.重载

重载指在一个类中,具有多个相同名称的方法,他们的参数列表却不相同

(参数类型不同、参数个数不同甚至是参数顺序不同)

重载对返回类型没有要求,可以相同也可以不同,但是不能返回类型来判断他们是否是重载。

例如

package HelloWorld;
public class Zuoye {
	public static void main(String[] args) {
		Zuoye z = new Zuoye();
		z.fangfa1();
		z.fangfa1("张旭");
	}
	public void fangfa1() {
		System.out.println("方法1");
	}
	public void fangfa1(String name) {
		System.out.println("也是方法1,不过有参数"+ name);
	}
}

小结:

1.重载是一个类中多态性的一种表现

2.重载是在一个类中,具有相同名称不同参数列表的方法

3.重载不能根据返回类型的相同或者不同来区分重载函数。

2.重写

1.重写是指在不同类中,将父类的方法在子类中重新写一遍,子类继承了父类原有的方法,但有时又不想继承父类原有一模一样的方法,所以就在返回类型,方法名,参数列表相同的情况下,对方法体进行修改进行重写,这就是重写。但注意的是 子类的访问修饰符不能比父类的更严格(意思就是父类的访问修饰符要更加 严谨,权限更少,父亲严格)

例如

package HelloWorld;
public class Father {
     public static void main(String[] args) {
    	    Son s = new Son();
    	    s.fangfa();
	}
	public void fangfa() {
		System.out.println("我是爸爸的方法");
	}
}
class Son extends Father {
	public void fangfa() {
		System.out.println("我是儿子的方法");
	}
}

返回结果是

小结:

1. 发生在父类和子类关系之间

2. 他们的返回类型,方法名,列表参数相同 方法体不同。

3.子类不能比父类更严格 ,(父亲比儿子严格)。

4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

private 最严格。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

public : 对所有类可见。使用对象:类、接口、变量、方法

总结重载和重写的区别:

答:方法的重载和重写都是实现多态的方式 ,区别在于重载实现的是编译时的多态性,重写实现的运行时的多态性。

重载是在发生在同一个类中,他们有相同的方法名 ,但有不同的参数列表,重载对返回类型没有特别要求,不能根据返回类型来进行区分 。

而重写发生在不同类中,发生在子类和父类之间的,重写要求子类与父类的被重写方法具有相同的返回类型,名称和参数列表。 但他们的方法体要不同。 同时,父类相较于子类,他的访问修饰符会更加严格,即访问范围更小。比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则) 。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

时间: 2021-10-31

Java方法重载和重写原理区别解析

一.方法重写(0verride) 在Java 程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样一种操作方法称为重写,也可以叫覆写或覆盖. 所以,所谓方法的重写是指子类中的方法和父类中继承的方法有完全相同的返回值类型.方法名.参数个数和参数类型.这样就可以实现对父类方法的覆盖. 如果子类将父类的方法重写了,调用的时候肯定是调用被重写过的子类的方法,但是

Java中重载与重写的对比与区别

Java中重载与重写的区别 首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样

深入理解java重载和重写

目录 重载 1.构造器的重载 2.方法的重载(overload) 重写 区分方法的重载和重写 总结 重载 1.构造器的重载 因为构造器的名字必须与类名相同,所以同一个类的所有构造器名肯定相同,构成重载:为了让系统能区分不同的构造器,多个构造器的参数列表必须不同. class Person{ int age; String name; public Person(){ } public Person(int age){ this.age = age; } public Person(int age

浅谈Java中的重载,重写,多态,静态绑定、动态绑定

本文主要研究的是关于Java中重载,重写,多态,静态绑定.动态绑定的相关内容,具体如下. 重载,英文名是overload,是指在一个类中定义了一个以上具有相同名称的方法,这些方法的参数个数.参数类型和顺序不能相同.返回类型可以相同,也可以不同. public class TstaticOverload { static int height; TstaticOverload() { System.out.println ("Planting a seedling"); height =

Java重写(Override)与重载(Overload)区别原理解析

这篇文章主要介绍了Java重写(Override)与重载(Overload)区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法. 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常.例如: 父类的一个

Java重写与重载之间的区别

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法. 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常.例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOEx

Java 重写与重载方法与区别详解

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法. 在面向对象原则里,重写意味着可以重写任何现有方法.实例如下: class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public

java abstract class interface之间的区别介绍

含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的.abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法.如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型. 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须

Java servlet、filter、listener、interceptor之间的区别和联系

servlet.filter.listener.interceptor之间的区别和联系 一.概念 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层. 2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求.响应和头信息.Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应. 3.listener:

Java中List Set和Map之间的区别_动力节点Java学院整理

Java集合的主要分为三种类型: • Set(集) • List(列表) • Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. 世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 有人想有可以自动扩展的数组,所以有了List 有的

java 函数的重载和重写实例代码

在java中多态分为两种编译时多态(重载)和运行时多态(重写),编译时多态又叫前绑定,运行时多态又叫后绑定. 下面用一个例子说明: public class OverloadAndOverwrite { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.print("a1.print(a1)

简述JAVA同步、异步、阻塞和非阻塞之间的区别

同步和异步,阻塞和非阻塞是大家经常会听到的概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈. 1. 同步和异步 同步和异步描述的是消息通信的机制. 同步 当一个request发送出去以后,会得到一个response,这整个过程就是一个同步调用的过程.哪怕response为空,或者response的返回特别快,但是针对这一次请求而言就是一个同步的调用. 异步 当一个request发送出去以后,没有得到想要的response,而是通过后面的callback.状态或者通知的方式获得结果.可

深入理解java中的重载和覆盖

说到java中的重载和覆盖呢,大家都很熟悉了吧,但是呢我今天就要写这个. 本文主题: 一.什么是重载 二.什么是覆盖 三.两者之间的区别 重载(overload): 在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了. 即当函数同名时,只看参数列表.和返回值类型没关系. 重载使用的时候需要注意: 1.在使用重载时只能通过不同的参数样式.例如,不同的参数类型,不同的参数个数,不同的参数顺序. 2.方法的异常类型和数目不会对重载造成影响