Witam.
Mam do zrobienia w klasie pochodnej konstruktor bezparametrowy, inicjalizujący oraz kopiujący (co zrobiłem) i w każdym konstruktorze, na liście inicjalizacyjnej wywołać odpowiedni konstruktor klasy bazowej. Problem właśnie w tym, że nie rozumiem za bardzo jak to zrobić. Wrzucam to co zrobiłem. czyli
-klasa Informatyk (pochodna klasy Pracownik)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BibliotekaKlas
{
class Informatyk : Pracownik
{
private string adresEmail;
private string stronaInternetowa;
public string AdresEmail
{
get { return adresEmail; }
set { adresEmail = value; }
}
public string StronaInternetowa
{
get { return stronaInternetowa; }
set { stronaInternetowa = value; }
}
public override Zawody Zawod
{
get { return Zawody.Informatyk; }
}
public Informatyk() : base()
{
this.adresEmail = "";
this.stronaInternetowa = "";
{ }
}
public Informatyk(string imie, string nazwisko, Data dataUrodzenia, Adres adresZamieszkania, string adresEmail, string stronaInternetowa): base(imie, nazwisko, dataUrodzenia, adresZamieszkania)
{
this.adresEmail = adresEmail;
this.stronaInternetowa = stronaInternetowa;
}
public Informatyk(Informatyk wzorzec) : base(wzorzec)
{
AdresEmail = wzorzec.adresEmail;
StronaInternetowa = wzorzec.stronaInternetowa;
}
public override Pracownik Clone()
{
return new Informatyk(this);
}
public override string SzczegolyZawodu()
{
return AdresEmail + "\t" + StronaInternetowa;
}
}
}
-klasa bazowa Pracownik:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BibliotekaKlas
{
public class Pracownik
{
private string imie;
private string nazwisko;
Data dataUrodzenia;
Adres adresZamieszkania;
public string Imie
{
get { return imie; }
set { imie = value; }
}
public string Nazwisko
{
get { return nazwisko; }
set { nazwisko = value; }
}
public Data DataUrodzenia
{
get { return dataUrodzenia; }
}
public Adres AdresZamieszkania
{
get { return adresZamieszkania; }
}
virtual public Zawody Zawod
{
get { return Zawody.Pracownik; }
}
public Pracownik()
{
dataUrodzenia = new Data();
adresZamieszkania = new Adres();
}
public Pracownik(string imie, string nazwisko, Data dataUrodzenia, Adres adresZamieszkania)
{
this.imie = imie;
this.nazwisko = nazwisko;
this.dataUrodzenia = dataUrodzenia;
this.adresZamieszkania = adresZamieszkania;
}
public Pracownik(Pracownik poprzedniPracownik)
{
Imie = poprzedniPracownik.imie;
Nazwisko = poprzedniPracownik.nazwisko;
dataUrodzenia = poprzedniPracownik.dataUrodzenia;
adresZamieszkania = poprzedniPracownik.adresZamieszkania;
}
virtual public Pracownik Clone()
{
return new Pracownik(this);
}
public override string ToString()
{
return base.ToString();
}
public virtual string FormatWyjsciowy()
{
return "imię nazwisko:" + Imie + " " + Nazwisko + "\n Data urodzenia: " + dataUrodzenia.Dzien + " " + dataUrodzenia.Miesiac + " " + dataUrodzenia.Rok + "\n Adres zamieszkania: " + " " + adresZamieszkania.Ulica + " " + adresZamieszkania.NumerDomu + " " + adresZamieszkania.Miasto;
}
public virtual string SzczegolyZawodu()
{
return "brak";
}
public string DataToString()
{
return "dzień " + dataUrodzenia.Dzien + "miesiąc: " + dataUrodzenia.Miesiac + "rok: " + dataUrodzenia.Rok;
}
public string AdresToString()
{
return "Ulica: " + adresZamieszkania.Ulica + " numer domu: " + adresZamieszkania.NumerDomu + "miasto " + adresZamieszkania.Miasto;
}
public virtual void OdczytConsole()
{
Console.Write("Podaj imie pracownika: ");
imie = Console.ReadLine();
Console.Write("Podaj nazwisko pracownika: ");
nazwisko = Console.ReadLine();
Console.Write("Podaj dzien urodzenia pracownika: ");
dataUrodzenia.Dzien = int.Parse(Console.ReadLine());
Console.Write("Podaj miesiac urodzenia pracownika: ");
dataUrodzenia.Miesiac = Console.ReadLine();
Console.Write("Podaj rok urodzenia pracownika: ");
dataUrodzenia.Rok = int.Parse(Console.ReadLine());
Console.Write("Podaj adres zamieszkania pracownika \n ");
Console.Write("Ulica ");
adresZamieszkania.Ulica = Console.ReadLine();
Console.Write("Numer domu ");
adresZamieszkania.NumerDomu = Console.ReadLine();
Console.Write("Miasto ");
adresZamieszkania.Miasto = Console.ReadLine();
}
public virtual void ZapisConsole()
{
Console.WriteLine(FormatWyjsciowy());
}
public virtual void OdczytXml(DataRow dr)
{
}
}
}
Próbowałem wzorować się na jednym przykładzie z Internetu i zrobiłem taki konstruktor bezparametrowy w klasie Informatyk:
public Informatyk() : base()
{
this.adresEmail = "";
this.stronaInternetowa = "";
Informatyk()
:
Pracownik();
{ }
}
Ale tu podkreśla mi na czerwono, więc zdecydowanie coś robię źle. Z góry dziękuję za pomoc!