
Вариант 1
Для классов клиентов и поставщиков справедливы утверждения:
у класса поставщика может быть много клиентов;
у класса клиента может быть много поставщиков;
поставщик может быть собственным поставщиком;
клиент может быть собственным клиентом;
отношение «клиент-поставщик» – задает отношение «имеет»;
отношение «клиент-поставщик» – задает отношение «является».
Отметьте истинные высказывания:
класс называется абстрактным, если он не вводит собственных полей данных;
если в методах класса А вызываются методы класса В, то это означает, что класс А является клиентом класса В;
у класса может быть несколько непосредственных родительских классов;
у класса может быть только один непосредственный потомок;
в проектах на C# контроль типов выполняется на этапе компиляции.
В родительском классе описан метод publicvirtualvoidM(intx) {}. Какие объявления в классе потомке вызовут ошибку на этапе компиляции?
override void M(int x){}
public override void M(int item){}
public new void M(int x){}
public virtual void M(int x){}
public virtual void M(int x, int y){}
Вариант 2
Для классов родителей и потомков справедливы следующие утверждения:
у родительского класса может несколько непосредственных потомков;
у класса потомка может быть несколько непосредственных родительских классов;
класс родитель может быть сам себе родитель;
класс потомок может быть собственным потомком;
потомок наследует все поля и методы родителя, за исключением закрытых (private);
Отметьте истинные высказывания:
класс с модификатором sealedне может иметь потомков;
класс с модификатором abstractне может иметь потомков с таким же модификатором;
если не задан специальный модификатор, то по умолчанию применяется динамическое связывание;
класс потомок не наследует конструкторы своего родителя.
В родительском классе описан метод publicvirtualvoidM(intx) {}. Какие объявления в классе потомке вызовут предупреждения на этапе компиляции?
override void M(int x){}
public override void M(int item){}
public new void M(int x){}
public virtual void M(int x){}
public virtual void M(int x, int y){} 2
Вариант 3
Для понятия «полиморфизм» справедливы следующие утверждения:
полиморфизм определяется для семейства классов, связанных отношением наследования;
полиморфизм определяется для семейства классов, связанных отношением вложенности;
полиморфизм означает, что в классе заданы перегруженные методы;
реализация полиморфизма построена на динамическом связывании;
реализация полиморфизма предполагает статический контроль типов.
Отметьте истинные высказывания:
вызов конструктора приводит к вызову конструкторов всех предков класса;
клиенту доступны все методы поставщика;
наследнику доступны все методы предков;
абстрактный класс может иметь полностью реализованный метод;
объект наследника «является» объектом родителя.
В родительском классе описан метод publicvoidM(intx) {}. Какие объявления в классе потомке вызовут ошибки или предупреждения на этапе компиляции?
public override void M(int x) {}
public new void M(int x) {}
public new void M(int x, int y){}
public void M(int x){}
private new void M(int x){}
[Введите текст] Страница