Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Modifikaattoreiden Harjoittelu | OOP:n Perusteet
C# Perusteiden Jälkeen

bookHaaste: Modifikaattoreiden Harjoittelu

Sinulle on annettu luokka nimeltä Person, jossa on kenttä name-tietojen tallentamiseen. Lisäksi on kaksi luokkaa, Student ja Teacher, jotka perivät Person-luokan.

Ohjelmassa on joitakin virheitä puutteellisen koodin vuoksi. Tehtävänäsi on täydentää koodi seuraavasti:

  1. Tee sekä Student- että Teacher-luokista Person-luokan aliluokkia;
  2. Varmista, että name-kenttä on käytettävissä aliluokissa, mutta ei muualla.
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. Tässä tehtävässä sinun tulee ensin käyttää perittyjen luokkien käsitettä ja sen jälkeen näkyvyysmuokkaimia.
  2. Käytämme :-symbolia määrittämään yliluokan lapsiluokan määrittelyssä.
  3. Muista, mikä näkyvyysmuokkain sopii name-kentälle, jotta se ei ole näkyvissä luokan ulkopuolelta, mutta on käytettävissä aliluokissa.
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(); } }
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookHaaste: Modifikaattoreiden Harjoittelu

Pyyhkäise näyttääksesi valikon

Sinulle on annettu luokka nimeltä Person, jossa on kenttä name-tietojen tallentamiseen. Lisäksi on kaksi luokkaa, Student ja Teacher, jotka perivät Person-luokan.

Ohjelmassa on joitakin virheitä puutteellisen koodin vuoksi. Tehtävänäsi on täydentää koodi seuraavasti:

  1. Tee sekä Student- että Teacher-luokista Person-luokan aliluokkia;
  2. Varmista, että name-kenttä on käytettävissä aliluokissa, mutta ei muualla.
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. Tässä tehtävässä sinun tulee ensin käyttää perittyjen luokkien käsitettä ja sen jälkeen näkyvyysmuokkaimia.
  2. Käytämme :-symbolia määrittämään yliluokan lapsiluokan määrittelyssä.
  3. Muista, mikä näkyvyysmuokkain sopii name-kentälle, jotta se ei ole näkyvissä luokan ulkopuolelta, mutta on käytettävissä aliluokissa.
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(); } }
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
some-alt