У вас есть несколько проблем, из-за которых код не компилируется, потому что ваши пропущенные точки с запятой и свойства неверны, однако, как только это будет сделано, ваш конструктор Person будет неправильным, поскольку у вас неправильное назначение.Наконец, свойство getID не инициализируется, поэтому оно всегда будет равно 0.
Наконец, свойство getId является избыточным, поскольку вы наследуете от Person свойство Id, поэтому оно даже не требуется.Если вы хотите получить идентификатор сотрудника, вы называете свойство Id.
Вот как это должно выглядеть.
class Person
{
public Person (){}
public Person (int ID)
{
Id = ID;
}
public int Id {get; set;}
}
class Employee: Person
{
public Employee():base(){}
public Employee(int emp):base(emp){}
}
Редактировать: OP обновил этот вопрос.
Во-первых, я настоятельно рекомендую вам вернуться к основам и перечитать, как работают конструкторы.В вашем классе сохраняемой учетной записи в обоих конструкторах вы передаете переменную, но, казалось бы, перезаписываете ее без причины.Я думаю, вы неправильно понимаете, как работает оператор присваивания.Если вы просто передадите аргумент в дочерний класс, он назначит его правильно, потому что вы вызываете конструктор base ().
Например, приведенный ниже конструктор действителен и назначит правильный баланс экземпляру SavingsAccount
public SavingsAccount ( decimal initialBalance ) : base ( initialBalance ){}
Кроме того, приведенный ниже конструктор не имеет никакого смысла, вы передаете сумму процентов, а затем перезаписываете, поэтому она всегда будет равна 0.
public SavingsAccount ( double interests )
{
interests = Interest;
}
Вместо этого поменяйте местами присвоение, чтобы свойство обновлялось с правильным значениемвы прошли, например, Interest = interests;
Если вы хотите расширить этот конструктор, вы также можете смешать их оба, чтобы получить сберегательный счет с интересом и балансом, не используя такие свойства, как:
public SavingsAccount ( decimal initialBalance, double interest ) : base ( initialBalance )
{
Interest = interest;
}
Во-вторых, вы неправильно понимаете, как работает наследование, вам не нужен экземпляр дочерних и родительских классов.Если вы создадите экземпляр дочернего класса, он унаследует поля и методы-члены.Если вам не нужен экземпляр класса Account по другим причинам, вам не нужно его создавать.Достаточно просто создать экземпляр Saving, это позволит вам получить доступ к методам / полям класса Account.Например, приведенного ниже кода достаточно
SavingsAccount savings = new SavingsAccount (); //Creates SavingAccount instance
Console.Write ( "Enter account balance: " );
savings.AccountBalance = Convert.ToDecimal ( Console.ReadLine () ); //Assigns an account balance to SavingAccount instance you have created
Console.WriteLine ( "Enter Interest rate in percentage: " );
savings.Interest = Convert.ToInt32 ( Console.ReadLine () ); //Assigns an interst to SavingAccount instance you have created
Console.WriteLine ( savings.AccountBalance );