using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Inheritance { //givet från uppgiften public class Person { protected string namn; protected string ort; public Person() { } // Konstruktor 1 public Person(string namn, string ort) {// Konstruktor 2 this.namn = namn; this.ort = ort; } public string Fakta() { return "Namn: " + namn + " Ort: " + ort; } } public class Anställd : Person { //konstruktor public Anställd(int lön) { this.lön = lön; } //lön, protected innebär att anbart de klasser som ärver av Anställd har tillgång till variabeln protected int lön; //skriver över Fakta() i person public new string Fakta() { return "Namn: " + namn + " Ort: " + ort + " Lön: " + lön; } } public class Försäljare : Anställd { //konstruktor, eftersom Försäljare ärver från Anställd och Anställds konstruktor tar in ett argument, //så behövs base(lön) för att skapa en anställd, och sedan utifrån den skapa en försäljare. public Försäljare(int lön, int provision) : base(lön) { this.provision = provision; } //provision protected int provision; //skriver över Fakta() i anställd public new string Fakta() { return "Namn: " + namn + " Ort: " + ort + " Lön: " + lön + " Provision: " + provision; } } class Program { static void Main(string[] args) { //antal objekt, öka med 1 varje gång ett objekt skapas int antalObjekt = 0; //skapa en person och skriv ut information om personen Person person = new Person(); antalObjekt++; Console.WriteLine(person.Fakta()); //skapa en anställd och skriv ut information om den anställda Anställd anställd = new Anställd(10); antalObjekt++; Console.WriteLine(anställd.Fakta()); //skapa en försäljare och skriv ut information om försäljaren Försäljare försäljare = new Försäljare(20, 10); antalObjekt++; Console.WriteLine(försäljare.Fakta()); //skriv ut antalet objekt Console.WriteLine("Antal objekt: " + antalObjekt); //vänta på input för att sedan stängas Console.ReadKey(true); } } }