Défi : Exercice sur les Modificateurs
Vous disposez d'une classe nommée Person avec un champ pour stocker le name. De plus, il existe deux classes nommées Student et Teacher qui dérivent de Person.
Le programme comporte des erreurs en raison de code incomplet. Votre tâche consiste à compléter le code en :
- Faisant en sorte que
StudentetTeacherhéritent tous deux de la classePerson; - Garantissant que le champ
namesoit accessible dans les classes dérivées mais inaccessible depuis l'extérieur.
index.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546using System; public class Person { // Field to store the name string name; } public class Student { public Student(string name) { this.name = name; } public void Study() { Console.WriteLine($"{name} is studying."); } } public class Teacher { public Teacher(string name) { this.name = name; } public void Teach() { Console.WriteLine($"{name} is teaching."); } } public class Program { public static void Main(string[] args) { Teacher t = new Teacher("Hannah"); Student s = new Student("Mark"); t.Teach(); s.Study(); } }
- Dans cet exercice, il faut d'abord utiliser le concept de classes dérivées, puis les modificateurs d'accès.
- On utilise le symbole
:pour spécifier la classe parente lors de la définition d'une classe dérivée. - Rappelez-vous quel modificateur d'accès est approprié pour le champ
nameafin de le masquer à l'extérieur de la classe tout en le rendant accessible dans les classes dérivées.
index.cs
123456789101112131415161718192021222324252627282930313233343536373839404142434445using System; public class Person { // Field to store the name protected string name; } public class Student : Person { public Student(string name) { this.name = name; } public void Study() { Console.WriteLine($"{name} is studying."); } } public class Teacher : Person { public Teacher(string name) { this.name = name; } public void Teach() { Console.WriteLine($"{name} is teaching."); } } public class Program { public static void Main(string[] args) { Teacher t = new Teacher("Hannah"); Student s = new Student("Mark"); t.Teach(); s.Study(); } }
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
What is the correct access modifier to use for the `name` field?
Can you show an example of how to define the inheritance for `Student` and `Teacher`?
Can you explain why the `name` field should not be public?
Awesome!
Completion rate improved to 2.04
Défi : Exercice sur les Modificateurs
Glissez pour afficher le menu
Vous disposez d'une classe nommée Person avec un champ pour stocker le name. De plus, il existe deux classes nommées Student et Teacher qui dérivent de Person.
Le programme comporte des erreurs en raison de code incomplet. Votre tâche consiste à compléter le code en :
- Faisant en sorte que
StudentetTeacherhéritent tous deux de la classePerson; - Garantissant que le champ
namesoit accessible dans les classes dérivées mais inaccessible depuis l'extérieur.
index.cs
12345678910111213141516171819202122232425262728293031323334353637383940414243444546using System; public class Person { // Field to store the name string name; } public class Student { public Student(string name) { this.name = name; } public void Study() { Console.WriteLine($"{name} is studying."); } } public class Teacher { public Teacher(string name) { this.name = name; } public void Teach() { Console.WriteLine($"{name} is teaching."); } } public class Program { public static void Main(string[] args) { Teacher t = new Teacher("Hannah"); Student s = new Student("Mark"); t.Teach(); s.Study(); } }
- Dans cet exercice, il faut d'abord utiliser le concept de classes dérivées, puis les modificateurs d'accès.
- On utilise le symbole
:pour spécifier la classe parente lors de la définition d'une classe dérivée. - Rappelez-vous quel modificateur d'accès est approprié pour le champ
nameafin de le masquer à l'extérieur de la classe tout en le rendant accessible dans les classes dérivées.
index.cs
123456789101112131415161718192021222324252627282930313233343536373839404142434445using System; public class Person { // Field to store the name protected string name; } public class Student : Person { public Student(string name) { this.name = name; } public void Study() { Console.WriteLine($"{name} is studying."); } } public class Teacher : Person { public Teacher(string name) { this.name = name; } public void Teach() { Console.WriteLine($"{name} is teaching."); } } public class Program { public static void Main(string[] args) { Teacher t = new Teacher("Hannah"); Student s = new Student("Mark"); t.Teach(); s.Study(); } }
Merci pour vos commentaires !