Maison  >  Article  >  Java  >  Explication détaillée du concept de surcharge de méthode en JAVA - simple et facile à comprendre

Explication détaillée du concept de surcharge de méthode en JAVA - simple et facile à comprendre

王林
王林avant
2019-08-30 14:30:423008parcourir

1. Quelle méthode est surchargée ?

La surcharge de la méthode fait référence au nom de la méthode est le même, mais le type de paramètre est différent

1.1, surcharge de la méthode d'attaque

Il existe un héros appelé le héros d'attaque physique ADHero, qui propose trois méthodes pour ADHero.

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

Les noms des méthodes sont les mêmes, mais les types de paramètres sont différents
Lors de l'appel de la méthode d'attaque, la méthode correspondante sera automatiquement appelée en fonction du type et de la quantité de paramètres passés

Explication détaillée du concept de surcharge de méthode en JAVA - simple et facile à comprendre

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);
    }
 
}

1.2. Nombre variable de paramètres

Si vous souhaitez attaquer plus de héros, vous devez concevoir plus de méthodes, afin que le la classe apparaîtra C'est très fastidieux, comme ceci :

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

À ce stade, vous pouvez utiliser un nombre variable de paramètres
Il vous suffit de concevoir une méthode
attaque publique void(Hero... héros)
pour représenter Toutes les méthodes ci-dessus
Dans la méthode, utiliser la méthode de fonctionnement du tableau pour traiter le paramètre héros

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);
 
    }
 
}

Exercice : Traitement
(Concevoir un support de classe (héros auxiliaire ) pour hériter du héros et fournir une méthode de guérison (Traitement)
Surcharger la méthode de guérison de Support
heal()
heal(Hero h) //Ajouter du sang au héros spécifié
heal(Hero h , int hp) // Ajout de hp au héros désigné)

Réponse

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 + "点血");
    }
     
}

Pour plus de contenu connexe, veuillez visiter le site Web PHP chinois : Tutoriel vidéo JAVA

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer