java方法重载(Overload) java方法重载的条件
lipiwang 2024-10-21 09:02 6 浏览 0 评论
重载
1. 重载的概念
在同一个类中,允许存在一个以上的同名方法,只要它们的参数不同即可。
参数不同的含义是仅参数个数不同 或者 类型不同 或者 顺序不同.
注意 :
参数不同不包含参数名的不同
2. 如何重载
在同一个类中写同名方法, 保证参数不同即可
public class Person {
// 这个方法就可以和下面2个方法形成重载
public int add(int a, int b) {
System.out.println(“a + b”);
int c = a + b;
return c;
}
public double add(int a, double b) {
return a + b;
}
public double add(double a, int b) {
return a + b;
}
public void test() {
System.out.println(“test()”);
}
}
3. 重载的方法的调用
调用重载方法取决于实参列表, 和形参列表要匹配才可以, 或者也可以是被形参列表兼容.
public class PersonTest {
public static void main(String[] args) {
Person t = new Person();
System.out.println(t.add(30, 50)); // 调用 int add(int a, int b)
System.out.println(t.add(209, 0.502)); // 调用 double add(int a, double b)
}
}
4. 重载的作用
在调用同名方法时, 只需要实参不同即可, 调用者调用这个方法就变得简单, 也不用再记忆多个不同的方法名. 前提是这些重载的方法有类似的功能.
5. 重载的练习
1.判 断:
与void show(int a,char b,double c){}构成重载的有:
a) void show(int x,char y,double z){}
b) int show(int a,double c,char b){}
c) void show(int a,double c,char b){}
d) boolean show(int c,char b){}
e) void show(double c){}
f) double show(int x,char y,double z){}
g) void shows(double c){}
参数传递机制
1. 为什么要传参
有的方法在执行时, 需要用到一些值, 这些值在执行时必须要由调用者传递(告诉)给方法, 方法才可以正确执行
2. 传参的本质是什么
传参的本质是方法在调用时, 把实参的值赋值给形参(形参是局部变量), 也称为传值调用
3. 方法调用的内存结构
public class Person {
public void test2(int a) {
System.out.println(“test2 a:” + a);
}
public int add(int a, int b) {
System.out.println(“a + b”);
int c = a + b;
return c;
}
}
public class PersonTest {
public static void main(String[] args) {
Person t = new Person();
int a = 10;
int b = 20;
int c = t.add(a, b); // 通过值传递把a的值赋值给方法中的形参a
System.out.println(c); // 方法调用返回值也是赋值给c
}
}
注意 : 方法返回值30保存在一个临时空间中, 方法调用结束后返回给调用者后就消失.
可变参数
1. 什么是可变参数
当一个方法中的参数类型都相同, 但是个数不确定的情况下.
2.如何声明可变参数
//下面采用数组形参来定义方法
public void test(int a ,String[] books);
//以可变个数形参来定义方法
public void test(int a ,String…books);
注意 : 以上两个方法不可以共存.
public class VarArgs {
/*类中的方法的功能类似, 但是参数个数不确定
public int avg(int a, int b) {
return (a + b) / 2;
}
public int avg(int a, int b, int c) {
return (a + b + c) / 3;
}
public int avg(int a, int b, int c, int d) {
return (a + b + c + d) / 4;
}*/
// 可变参数, 参数的个数可以是任意个, 只能放在参数列表的最后
public int avg(String a, int... values) { // int...是数组, 同时又能兼容任意个数参数
int sum = 0;
for (int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum / values.length;
}
}
3.可变参数的本质是什么
可变参数的本质上是方法在调用时, 实际传递的是数组.
public class VarArgsTest {
public static void main(String... args) {
VarArg va = new VarArg();
System.out.println(va.avg(2)); // 一个参数可以
System.out.println(va.avg()); // 不传参数也可以
System.out.println(va.avg(null)); // 传null也可以
System.out.println(va.avg(10, 20, 40, 50)); // 任意多个也可以
System.out.println(va.avg(10, 20, 40, 50,70, 80, 100, 5, 2, 3));
int[] arr = new int[]{2, 3, 4, 5};
System.out.println(va.avg(arr)); // 直接传数组也可以
System.out.println(va.avg(new int[]{10, 20})); // 编译器会自动做这件事,也可以手工创建数组
}
}
相关推荐
- 前端入门——css 网格轨道详细介绍
-
上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...
- Islands Architecture(孤岛架构)在携程新版首页的实践
-
一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:维护/...
- HTML中script标签中的那些属性
-
HTML中的<script>标签详解在HTML中,<script>标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用<scrip...
- CSS 中各种居中你真的玩明白了么
-
页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...
- CSS样式更改——列表、表格和轮廓
-
上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。1.列表List1).列表的类型<ulstyle='list-...
- 一文吃透 CSS Flex 布局
-
原文链接:一文吃透CSSFlex布局教学游戏这里有两个小游戏,可用来练习flex布局。塔防游戏送小青蛙回家Flexbox概述Flexbox布局也叫Flex布局,弹性盒子布局。它决定了...
- css实现多行文本的展开收起
-
背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...
- css 垂直居中的几种实现方式
-
前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...
- WordPress固定链接设置
-
WordPress设置里的最后一项就是固定链接设置,固定链接设置是决定WordPress文章及静态页面URL的重要步骤,从站点的SEO角度来讲也是。固定链接设置决定网站URL,当页面数少的时候,可以一...
- 面试发愁!吃透 20 道 CSS 核心题,大厂 Offer 轻松拿
-
前端小伙伴们,是不是一想到面试里的CSS布局题就发愁?写代码时布局总是对不齐,面试官追问兼容性就卡壳,想跳槽却总被“多列等高”“响应式布局”这些问题难住——别担心!从今天起,咱们每天拆解一...
- 3种CSS清除浮动的方法
-
今天这篇文章给大家介绍3种CSS清除浮动的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。首先,这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。下面我就讲3种常用清除浮动的...
- 2025 年 CSS 终于要支持强大的自定义函数了?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.什么是CSS自定义属性CSS自...
- css3属性(transform)的一个css3动画小应用
-
闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML代码如下:需要说明的一点是,a链接的跳转需要用javasc...
- CSS基础知识(七)CSS背景
-
一、CSS背景属性1.背景颜色(background-color)属性值:transparent(透明的)或color(颜色)2.背景图片(background-image)属性值:none(没有)...
- CSS 水平居中方式二
-
<divid="parent"><!--定义子级元素--><divid="child">居中布局</div>...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)