当前位置: 首页 > news >正文

【java基础】方法重载和方法重写

文章目录

  • 方法重载
  • 方法重写

方法重载

方法重载就是可以在一个类里面定义多个相同名称的方法,只需要参数列表的个数或者类型不同就行。

public class Overload {public int add(int a, int b) {return a + b;}public double add(double a, double b) {return a + b;}}

对于方法重载,返回值是可以不一样的,只要保证参数列表的个数或者类型不同就行。java在调用方法时会自动选择最精确匹配的方法。

public class Overload {public int add(int a, int b) {System.out.println("add(int a, int b)");return a + b;}public int add(Integer a, int b) {System.out.println("add(Integer a, int b)");return a + b;}public static void main(String[] args) {Overload overload = new Overload();overload.add(1, 1);overload.add(Integer.valueOf(1), 1);}
}

上面代码就会输入如下信息

add(int a, int b)
add(Integer a, int b)

可以发现,方法匹配就是按照最相似来进行匹配的。如果上面代码我们随便删掉一个add方法,那么程序都可以正常执行。

public class Overload {public int add(int a, int b) {System.out.println("add(int a, int b)");return a + b;}public static void main(String[] args) {Overload overload = new Overload();overload.add(1, 1);overload.add(Integer.valueOf(1), 1);}
}
public class Overload {public int add(Integer a, int b) {System.out.println("add(Integer a, int b)");return a + b;}public static void main(String[] args) {Overload overload = new Overload();overload.add(1, 1);overload.add(Integer.valueOf(1), 1);}
}

这样就可以证明了java在执行方法时,如果存在多个满足条件的方法,那么就会选择匹配类型最相近的那个

方法重写

方法重写就是在子类中我们可以写一个和父类方法签名一样的方法,相当于参数完全一样,方法名完全一样

class A {public void info(int a) {}
}class B extends A {@Overridepublic void info(int a) {}
}

上面的@Override注解用于检测是否成功重写,可以不写(建议写)。
对于方法重写,访问修饰符可以进行扩大

class A {protected void info(int a) {}
}class B extends A {@Overridepublic void info(int a) {}
}

上面就将访问修饰符从protected扩大为了public
重写的返回类型还可以不一样,只需要是被重写方法返回类型的子类型即可

class A {protected Object info(int a) {return null;}
}class B extends A {@Overridepublic String info(int a) {return "";}
}
http://www.lryc.cn/news/21293.html

相关文章:

  • Gradle7.4安装与基本使用
  • [系统安全] 虚拟化安全之虚拟化概述
  • 如何从零开始系统的学习项目管理?
  • 面试题-----
  • 线材-电子线载流能力
  • 单变量回归问题
  • ubuntu/linux系统知识(36)linux网卡命名规则
  • java的一些冷知识
  • java代理模式
  • JUC包:CountDownLatch源码+实例讲解
  • Log4j2基本使用
  • A2L在CAN FD总线的使用
  • Android JetPack之启动优化StartUp初始化组件的详解和使用
  • [11]云计算|简答题|案例分析|云交付|云部署|负载均衡器|时间戳
  • C++11/C++14:lambda表达式
  • 算法课堂-分治算法
  • 操作系统权限提升(十六)之绕过UAC提权-CVE-2019-1388 UAC提权
  • 实例9:四足机器人运动学正解平面RR单腿可视化
  • 堆的基本存储
  • 如何获取物体立体信息通过一个相机
  • 【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)
  • 一些硬件学习的注意事项与快捷方法
  • 【Tomcat】Tomcat安装及环境配置
  • 负载均衡:LVS 笔记(二)
  • SEO优化:干货技巧分享,包新站1-15天100%收录首页
  • JavaWeb测试题
  • Java EE|TCP/IP协议栈之数据链路层协议详解
  • Lighthouse组合Puppeteer检测页面
  • 【C++】仿函数、lambda表达式、包装器
  • 二叉树(二)