什么是Java 方法重载

方法的重载指的是方法名一样,但是参数类型不一样

步骤 1 : attack方法的重载

有一种英雄,叫做物理攻击英雄 ADHero 为ADHero 提供三种方法

public void attack()

public void attack(Hero h1)

public void attack(Hero h1, Hero h2)

方法名是一样的,但是参数类型不一样 在调用方法attack的时候,会根据传递的参数类型以及数量,自动调用对应的方法

public class ADHero extends Hero {

public void attack() {

System.out.println(name + " 进行了一次攻击 ,但是不确定打中谁了");

}

public void attack(Hero h1) {

System.out.println(name + "对" + h1.name + "进行了一次攻击 ");

}

public void attack(Hero h1, Hero h2) {

System.out.println(name + "同时对" + h1.name + "和" + h2.name + "进行了攻击 ");

}

public static void main(String[] args) {

ADHero bh = new ADHero();

bh.name = "赏金猎人";

Hero h1 = new Hero();

h1.name = "盖伦";

Hero h2 = new Hero();

h2.name = "提莫";

bh.attack(h1);

bh.attack(h1, h2);

}

}

步骤 2 : 可变数量的参数

如果要攻击更多的英雄,就需要设计更多的方法,这样类会显得很累赘,像这样:

public void attack(Hero h1)

public void attack(Hero h1,Hero h2)

public void attack(Hero h1,Hero h2,Hero 3)

这时,可以采用可变数量的参数 只需要设计一个方法 public void attack(Hero ...heros) 即可代表上述所有的方法了 在方法里,使用操作数组的方式处理参数heros即可

public class ADHero extends Hero {

public void attack() {

System.out.println(name + " 进行了一次攻击 ,但是不确定打中谁了");

}

// 可变数量的参数

public void attack(Hero... heros) {

for (int i = 0; i < heros.length; i++) {

System.out.println(name + " 攻击了 " + heros[i].name);

}

}

public static void main(String[] args) {

ADHero bh = new ADHero();

bh.name = "赏金猎人";

Hero h1 = new Hero();

h1.name = "盖伦";

Hero h2 = new Hero();

h2.name = "提莫";

bh.attack(h1);

bh.attack(h1, h2);

}

}

练习: 治疗 (设计一个类Support (辅助英雄)继承Hero,提供一个heal(治疗)方法

对Support的heal方法进行重载

heal()

heal(Hero h) //为指定的英雄加血

heal(Hero h, int hp) //为指定的英雄加了hp的血)

答案:

public class Support extends Hero {

public void heal() {

System.out.println("对自己进行治疗");

}

public void heal(Hero hero) {

System.out.println("给英雄 " + hero + " 加血");

}

public void heal(Hero hero, int hp) {

System.out.println("给英雄 " + hero + " 加了 " + hp + "点血");

}

}

java 类的重载_Java自学-类和对象 方法重载相关推荐

  1. java继承孙子类_Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态 这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关 ...

  2. java设计复数类报告总结_java复数类

    1 编写一个完整的 Java 程序,包括 Complex 和 TestComplex 两个类. 使用复数类 Complex 验证两个复数 1+2i 和 3+4i 相加产生一个新的复数 4+6i . . ...

  3. java修饰符默认_Java的类,方法,变量等等的默认修饰符是什么

    访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为default,在同一包内可见,不使用任何修饰符. 私有的,以pr ...

  4. java biginteger 取模_Java BigInteger类

    其实除了Python,Ruby外,Java也自带高精,只不过被封装在类里.Java有两个高精类:BigInteger和BigDecimal,分别是高精度整数和高精度小数.本文来简单介绍一下BigInt ...

  5. 80070583类不存在_Java自学-接口与继承 内部类

    Java 内部类 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤 1 : 非静态内部类 非静态内部类 BattleScore "战斗成绩" 非静态内部类可以直接 ...

  6. 时间日期类JAVA包含地区属性_Java常用类 | 时间和日期类

    开发中经常涉及到时间与日期,记录下Java中与时间和日期相关的API JDK8之前与时间日期相关的类 java.lang.System类 System类提供了一个公共的静态方法currentTimes ...

  7. java 反射 私有成员_Java对类私有变量的暴力反射技术讲解

    Java对类私有变量的暴力反射 假设有一个类,他有一个私有变量: package com.howlaa.day04; public class ReflectPoint { private int p ...

  8. java date格式化输出_Java Date类以及日期的格式化输出

    Java中的Date类用于表示日期时间,在java.util包中.虽然Date类在设计之初没有考虑到国际化,很多方法都已经被定义为过时,但是Date却是程序设计过程中经常用到的一个类.本文将说说Dat ...

  9. 不能将brassplus类型的值分配到brass类的实体_Java 基础 - 类与对象

    类.对象和引用的关系 类和对象的关系 类是对象的模版,对象是类的一个实例,一个类可以有很多对象 一个Java程序中类名相同的类只能有一个,也就是类型不会重名 一个对象只能根据一个类来创建 引用和类以及 ...

最新文章

  1. vsftpd服务安装与虚拟用户配置
  2. 解决大众点评换设备无法用卷(你本次购买不符合活动规则)的问题
  3. 三星又推出新工具啦!Gear VR 可以兼容多个视频
  4. CF396C On Changing Tree
  5. mysql5.6 centos编译部署
  6. 简单描述DDL、DCL、DML
  7. MySql8.0.19最新版本创建用户分配权限演示,You have an error in your SQL syntax权限分配问题解决方法
  8. 用少于10行代码训练前沿深度学习新药研发模型
  9. [转]如何切换多个GitHub账号
  10. 简单了解RestTemplate
  11. PLC可编程控制器综合实训装置
  12. css的sprites什么意思,CSS Sprites是什么
  13. 操作系统基础:内存管理逻辑思维导图,简单看懂内存管理的逻辑
  14. linux文件同步方法,inotify + rsync实现linux文件实时同步
  15. 西门子S7-1200PLC控制3轴伺服程序 触摸屏是西门子Tp900 3轴伺服PTO,脉冲加方向控制
  16. 六轴机器人轨迹规划之五段位置s曲线插补
  17. 专题分纲目录 思维导图 XMind 闯关之路
  18. python数据可视化—WordCloud词云图
  19. python怎么样?
  20. 安装laravel/Horizon

热门文章

  1. 【网络安全】如何使用keimpx检测网络环境中的有效凭证
  2. 【Python】快速设置 pip 源
  3. 【PAT乙级】1090 危险品装箱 (25 分)
  4. EasyX制作掩码图
  5. Oracle中的常用的数据类型
  6. 【Java自顶向下】HashMap面试题(2021最新版)
  7. 自编码器(Auto Encoder)原理及其python实现
  8. 从最新的编程语言排行看,Java真的要凉了吗?
  9. 一文读懂Redis常见对象类型的底层数据结构
  10. 记一次使用 Lombok 翻车造成的事故!