Maison  >  Article  >  Java  >  Quels sont les niveaux de contrôle d'accès aux méthodes pris en charge par le mécanisme de surcharge de fonctions Java ?

Quels sont les niveaux de contrôle d'accès aux méthodes pris en charge par le mécanisme de surcharge de fonctions Java ?

王林
王林original
2024-04-25 21:12:01685parcourir

La surcharge de fonctions Java permet la création de fonctions avec des signatures différentes mais le même nom, la visibilité est contrôlée par le niveau de contrôle d'accès, qui prend en charge privé, privé au niveau du package, protégé et public. Par exemple, la fonction calculateArea() peut être surchargée pour accepter un argument cercle ou carré et être accessible depuis différents emplacements en fonction du niveau de contrôle d'accès.

Java 函数重载机制支持的方法访问控制级别有哪些?

Niveaux de contrôle d'accès pour la surcharge de fonctions Java

La surcharge de fonctions en Java permet de définir plusieurs fonctions avec le même nom mais des signatures différentes. Ces fonctions peuvent avoir différents types de paramètres, nombres de paramètres et types de retour. Dans la surcharge de fonctions, le niveau de contrôle d'accès détermine la visibilité des différentes versions de la méthode surchargée sur différents packages et classes.

Niveaux de contrôle d'accès pris en charge par la surcharge de fonctions Java

Le langage Java prend en charge les niveaux de contrôle d'accès suivants :

  • private (private) : Accessible uniquement depuis la classe dans laquelle ils sont définis.
  • Package-private : accessible uniquement à partir des classes du package qui les contient.
  • Protégé : accessible uniquement à partir des classes et des classes dérivées du package qui les contient.
  • Public : accessible depuis n'importe quelle classe.

Exemple pratique

Considérons l'exemple suivant où la fonction surchargée calculateArea() accepte différents paramètres en fonction de la forme (cercle ou carré) : calculateArea() 函数根据形状(圆形或正方形)接受不同的参数:

public class ShapeCalculator {

    public double calculateArea(Circle circle) {
        return Math.PI * circle.getRadius() * circle.getRadius();
    }

    public double calculateArea(Square square) {
        return square.getWidth() * square.getWidth();
    }
}

在这个示例中,我们声明了 calculateArea() 函数的两个版本:

  • calculateArea(Circle circle) 接收一个圆形对象作为参数,并返回圆形的面积。
  • calculateArea(Square square) 接收一个正方形对象作为参数,并返回正方形的面积。

两个版本的 calculateArea() 函数都可以从任何类中访问,因为它们都声明为 publicrrreee

Dans cet exemple, nous avons deux versions de la fonction calculateArea() sont déclarés :
  • calculateArea(Circle circle) reçoit un objet circulaire en paramètre et renvoie l'aire du cercle.
  • calculateArea(Square square) reçoit un objet carré en paramètre et renvoie l'aire du carré.
Les deux versions de la fonction calculateArea() sont accessibles depuis n'importe quelle classe car elles sont toutes deux déclarées comme public. Par conséquent, nous pouvons utiliser ces fonctions n'importe où :

🎜Classes au sein d'un même package 🎜🎜Classes au sein de différents packages 🎜🎜Depuis la méthode principale 🎜🎜🎜Il convient de noter que le niveau de contrôle d'accès est différent selon les versions Remplacement et surcharge de charge les méthodes sont également importantes. Par exemple, dans une sous-classe, vous pouvez uniquement remplacer les méthodes de la classe parent qui ont un niveau de contrôle d'accès identique ou plus large. 🎜

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn