JAVA的重载与重写&隐藏与覆盖

重载:

前提条件:重载是针对方法来说的,

①在同一个类当中,
②函数名字相同,
③但是参数个数不同或参数类型不同或参数顺序不同
④只有返回值不同是不可以的

重写:

前提条件:重写是针对实例方法来说的

1、要求子父类有相同的“返回值类型 方法名(参数列表)”都相同
2、子类方法的权限修饰符不能小于父类方法的权限修饰符
3、若父类方法抛异常,那么子类方法抛的异常不能大于父类方法抛的异常
4、子父类的方法必须同为static或者同为非static

方法不能交叉覆盖:子类实例方法不能覆盖父类的静态方法;子类的静态方法也不能覆盖父类的实例方法

注意:重写是对子类中可见的父类方法而言的,如果在父类中的方法在子类中不可见,那根本就不存在重写一说

上图中绿色小三角就代表这个方法重写了

覆盖:

覆盖就是重写

隐藏:

隐藏是对于静态方法和成员变量(实例变量和静态变量)而言的,就是父类和子类有相同名字的属性,或者父类和子类有相同名字的静态方法时,

属性是可以交叉隐藏:子类的实例变量可以隐藏父类的静态变量;子类的静态变量可以隐藏父类的实例变量

原理:

覆盖的原理是RTTI,也就是通过Class对象实现的,看的是=后面,运行时类型为引用变量所指向的对象的类型

隐藏就是根据单纯的静态类型实现的,看的是=前面,编译时类型是引用变量自身的类型

原文地址:https://www.cnblogs.com/erdanyang/p/10134652.html

时间: 2024-08-29 10:44:21

JAVA的重载与重写&隐藏与覆盖的相关文章

java中重载与重写浅析

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

java中重载与重写的区别

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

【JAVA】重载和重写的区别

重写(Overriding) 重写规则 1. 参数列表:必须与被重写方法的参数列表完全匹配.  2. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同  3. 访问级别:一定不能比被重写方法强,可以比被重写方法的弱.  4. 非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否声明了该异常.  5. 检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常  6. 不能重写标志为final,static的方法 其中: 1. 父类与子类之

java中重载和重写

java中经常会有面试题考一些重载和重写的知识下面分析二者各自特性以及如何区分 (1)重载 (overload) 定义:java中允许方法名相同,但是参数列表不同,我们称之为方法的重载: 我们可以把 方法名 和 参数列表 定义为 方法签名:也就是方法签名包含方法名和参数列表两部分:一个类中是不可以有方法签名相同的两个方法,否则会报错的: 方法重载的意义:就是同一方法名根据传入的参数不同会有不同的方法功能:   具体举例就像超市的收银台可以收现金,可以刷卡,可以支付宝:可以微信,可以超市购物卡:收

java 方法重载与重写的归纳

方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法 示例代码: public class Test { //无返回值有有int形的参数 void receive(int i) {System.out.println("i="+i);} //无返回值,有float形的参数 void receive(float f) {Sys

Java中重载和重写的区别【转载】

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

JAVA构造器,重载与重写

1. java构造器 构造器也叫构造方法(constructor), 用于对象初始化. 构造器是一个创建对象时被自动创建的特殊方法,目的是对象的初始化. 构造器 的名称与类的名称一致. JAVA通过new关键子来调用构造器,从而返回该类的实例,是一种特殊的方法. 备注要点: a. 通过new关键字来调用 b. 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型是本类), 不能在构造器使用return返回某个值. c. 如果没有我们定义构造器,则编译器会自动定义一个无参构造器. 如果已定义构

Java面试——重载、重写、重构的区别

一.重载 构造函数是一种特殊的函数,使用构造函数的目的是用来在对象实例化时初始化对象的成员变量.由于构造函数名字必须与类名一致,我们想用不同的方式实例化对象时,必须允许不同的构造方法同时存在,这就用到了重载. 重载虽然起源于构造方法,但是在普通方法中也可以使用方法的重载.方法的重载就是在同一个类中允许同时存在多个同名方法,只要这些方法的参数类型.个数.顺序不同即可. package com.java.test; public class ReLoad { //构造方法的重载 public ReL

Java方法重载与重写(静态分派与动态分派)

Java面向对象3个基本特征:继承.封装和多态:多态主要体现在重载和重写: 1.静态分派 静态分派与重载有关,虚拟机在重载时是通过参数的静态类型,而不是运行时的实际类型作为判定依据的:静态类型在编译期是可知的: 1)基本类型 以char为例,按照char>int>long>double>float>double>Character>Serializable>Object>...(变长参数,将其视为一个数组元素) 变长参数的重载优先级最低 (注意char