Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Övning på Modifierare | OOP-Grunder
C# Bortom Grunderna

bookUtmaning: Övning på Modifierare

Du har en klass som heter Person med ett fält för att lagra name. Dessutom finns det två klasser, Student och Teacher, som ärver från Person.

Det finns vissa fel i programmet på grund av ofullständig kod. Din uppgift är att komplettera koden genom att:

  1. Göra så att både Student och Teacher ärver från klassen Person;
  2. Säkerställa att fältet name är åtkomligt i barnklasserna men otillgängligt från andra delar av programmet.
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. I denna uppgift behöver du först använda konceptet med arv (deriverade klasser), därefter åtkomstmodifierare.
  2. Vi använder symbolen : för att ange basklassen i definitionen av en barnklass (deriverad klass).
  3. Kom ihåg vilken åtkomstmodifierare som är lämplig för fältet name för att dölja det från utsidan av klassen men göra det åtkomligt från barnklasserna.
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(); } }
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookUtmaning: Övning på Modifierare

Svep för att visa menyn

Du har en klass som heter Person med ett fält för att lagra name. Dessutom finns det två klasser, Student och Teacher, som ärver från Person.

Det finns vissa fel i programmet på grund av ofullständig kod. Din uppgift är att komplettera koden genom att:

  1. Göra så att både Student och Teacher ärver från klassen Person;
  2. Säkerställa att fältet name är åtkomligt i barnklasserna men otillgängligt från andra delar av programmet.
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. I denna uppgift behöver du först använda konceptet med arv (deriverade klasser), därefter åtkomstmodifierare.
  2. Vi använder symbolen : för att ange basklassen i definitionen av en barnklass (deriverad klass).
  3. Kom ihåg vilken åtkomstmodifierare som är lämplig för fältet name för att dölja det från utsidan av klassen men göra det åtkomligt från barnklasserna.
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(); } }
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4
some-alt