Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Oefening met Modificatoren | OOP Essentials
C# Verder dan de Basis

bookUitdaging: Oefening met Modificatoren

Je krijgt een klasse genaamd Person met een veld om de name op te slaan. Daarnaast zijn er twee klassen genaamd Student en Teacher die afgeleid zijn van Person.

Er zitten enkele fouten in het programma vanwege onvolledige code. Je taak is om de code te voltooien door:

  1. Zowel Student als Teacher te laten erven van de klasse Person;
  2. Ervoor te zorgen dat het veld name toegankelijk is in de afgeleide klassen, maar niet toegankelijk is vanuit andere locaties.
index.cs

index.cs

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
using 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(); } }
  1. In deze opdracht moet je eerst het concept van afgeleide klassen gebruiken, daarna de toegangsmodificatoren.
  2. We gebruiken het symbool : om de bovenliggende klasse te specificeren in de definitie van een afgeleide klasse.
  3. Bedenk welke toegangsmodificator geschikt is voor het veld name om het te verbergen voor buitenstaanders, maar toegankelijk te maken voor afgeleide klassen.
index.cs

index.cs

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445
using 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(); } }
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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

bookUitdaging: Oefening met Modificatoren

Veeg om het menu te tonen

Je krijgt een klasse genaamd Person met een veld om de name op te slaan. Daarnaast zijn er twee klassen genaamd Student en Teacher die afgeleid zijn van Person.

Er zitten enkele fouten in het programma vanwege onvolledige code. Je taak is om de code te voltooien door:

  1. Zowel Student als Teacher te laten erven van de klasse Person;
  2. Ervoor te zorgen dat het veld name toegankelijk is in de afgeleide klassen, maar niet toegankelijk is vanuit andere locaties.
index.cs

index.cs

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
using 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(); } }
  1. In deze opdracht moet je eerst het concept van afgeleide klassen gebruiken, daarna de toegangsmodificatoren.
  2. We gebruiken het symbool : om de bovenliggende klasse te specificeren in de definitie van een afgeleide klasse.
  3. Bedenk welke toegangsmodificator geschikt is voor het veld name om het te verbergen voor buitenstaanders, maar toegankelijk te maken voor afgeleide klassen.
index.cs

index.cs

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445
using 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(); } }
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 4
some-alt