Notions de base des classes (C# et Java)
Mise à jour : novembre 2007
Les sections suivantes comparent les modificateurs C# et Java.
Modificateurs d'accès
Les modificateurs C# sont assez semblables à ceux de Java, à quelques petites différences près. Chaque membre d'une classe, ou la classe elle-même, peut être déclaré avec un modificateur d'accès pour définir la portée de l'accès autorisé. Les classes qui ne sont pas déclarées à l'intérieur d'autres classes peuvent uniquement spécifier les modificateurs publics ou internes. Les classes imbriquées, comme d'autres membres de classe, peuvent spécifier n'importe lequel des 5 modificateurs d'accès suivants :
-
Visible par tous.
-
Visible uniquement à partir des classes dérivées.
-
Visible uniquement à l'intérieur de la classe donnée.
-
Visible uniquement à l'intérieur du même assembly.
protected internal
Visible uniquement à l'assembly courant ou aux types dérivés de la classe conteneur.
Les modificateurs publics, protégés et privés
Un modificateur public rend le membre disponible n'importe où, à la fois à l'intérieur et à l'extérieur de la classe. Un modificateur protected indique que l'accès est limité à l'intérieur de la classe conteneur ou des classent qui en dérivent. Un modificateur private signifie que l'accès est possible uniquement à partir de l'intérieur du type conteneur. En C#, le modificateur d'accès par défaut est privé, tandis qu'en Java, l'accès se fait par défaut à partir de n'importe où à l'intérieur du package conteneur.
Le modificateur internal
Un élément internal est accessible uniquement à l'intérieur de l'assembly courant. Un assembly, dans le .NET Framework équivaut approximativement au fichier JAR de Java. Il correspond à un des blocs de construction à l'aide desquels les programmes sont construits.
Le modificateur protected internal
Un élément protected internal est visible uniquement à l'assembly courant ou aux types dérivés de la classe conteneur.
Le modificateur sealed
Une classe avec le modificateur sealed sur sa déclaration de classe est le contraire d'une classe abstraite : elle ne peut pas être héritée. Vous pouvez marquer une classe comme sealed pour empêcher d'autres classes de substituer sa fonctionnalité. Naturellement, une classe sealed ne peut pas être abstraite. Notez également qu'un struct est implicitement sealed ; par conséquent, il ne peut pas être hérité. Le modificateur sealed équivaut à marquer une classe avec le mot clé final en Java.
Le modificateur readonly
Pour définir une constante en C#, utilisez le modificateur const ou readonly au lieu du mot clé final de Java. Le facteur qui fait la distinction entre les deux modificateurs en C# est que les éléments const sont gérés au moment de la compilation, alors que les valeurs de champs readonly sont spécifiées au moment de l'exécution. Cela signifie que l'assignation aux champs readonly peut se produire dans le constructeur de classe aussi bien que dans la déclaration. Par exemple, la classe suivante déclare une variable readonly appelée IntegerVariable qui est initialisé dans le constructeur de classe :
public class SampleClass
{
private readonly int intConstant;
public SampleClass () //constructor
{
// You are allowed to set the value of the readonly variable
// inside the constructor
intConstant = 5;
}
public int IntegerConstant
{
set
{
// You are not allowed to set the value of the readonly variable
// anywhere else but inside the constructor
// intConstant = value; // compile-time error
}
get
{
return intConstant;
}
}
}
class TestSampleClass
{
static void Main()
{
SampleClass obj= new SampleClass();
// You cannot perform this operation on a readonly field.
obj.IntegerConstant = 100;
System.Console.WriteLine("intConstant is {0}", obj.IntegerConstant); // 5
}
}
Si un modificateur readonly est appliqué à un champ statique, il doit être initialisé dans le constructeur statique de la classe.
Voir aussi
Concepts
Référence
Modificateurs d'accès (Guide de programmation C#)
Constantes (Guide de programmation C#)