Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Homework] OOP - Inheritance and Abstraction - Problem {1} - School - викане на конструктор от базов клас

Здравейте,

Явно правя някаква много елементарна грешка, но не мога да я открия. Ето конструктира на абстрактния базов клас Person:

  1. public Person(string name, string details = null)
  2.     {
  3.         this.Name = name;
  4.         this.Details = details;
  5.     }

Тук го викам в конструктора на класа наследник Student:

public Student(uint number) : base(name, details)
{
this.UniqueClassNumber = number;
}

 

Компилаторът пищи, че не може да ги достъпи поради ниво на достъп. Не мога да разбера какво иска - ние не достъпваме private полета, а конструктор. Така съм го правил и при други класове с онаследяване. Ето линк към целия код:
http://pastebin.com/cX9FVakJ

http://pastebin.com/jvBBJfZG

http://pastebin.com/Hjfm2tBE

http://pastebin.com/mfWiAaAv

Благодаря предварително!

Тагове:
0
C# OOP Basics
a.polyanska avatar a.polyanska 107 Точки

Здравейте,

Имам подобен проблем, като колегата, но със задачата Animals. Затова и задавам въпроса тук, а не отварям нова тема. Прочетох отговорите, но въпреки всичко съм объркана и не мога да разбера откъде идва проблемът ми. В задачата съм задала някакви конструктори и пропъртита за име, възраст и пол на базовия клас Animal. Достъпът до тях е публичен. Ето кода: Animal

Когато, обаче, се опитам да дам на класа Dog, който наследява Animal да преизползва конструктора от базовия клас:

 public Dog(string dogName, decimal dogAge, Gender dogGender)
            : base(Name, Age, gender)

 

не ми приема нито Name, нито Age, нито gender-a, a ми дава грешка "Object reference is required".

Още повече ме обърква фактът, че СЪВСЕМ същото нещо (или поне си мисля, че е същото :) ) направих и в предната задача и сработи без никакъв проблем. Някой може ли да ми даде насока къде бъркам?

Благодаря!

0
30/01/2015 20:09:49
Filkolev avatar Filkolev 4482 Точки

Когато викаш базовия конструктор просто му подай параметрите, които са подадени на конструктора на кучето, т.е.:

: base(dogName, dogAge, doggender)

1
a.polyanska avatar a.polyanska 107 Точки

Ха, явно съвсем съм се оплела и крайно грешно съм схванала цялата концепция! Аз мислех, че трябва да извикаме параметрите с имената от базовия клас. Много ме помешаха тези еднакви имена, малки и големи букви и т.н. Както и да е- така, разбира се, сработи и по-важното- просветна ми поредното погрешно разбиране на нещата :) Много ти благодаря, полезен играч, както винаги :)

1
RoYaL avatar RoYaL Trainer 6849 Точки

Не ги викаш (те не съществуват), а ги подаваш (искаш да им пратиш някакви стойности)

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.