Главная / Программирование /
Программирование на языке высокого уровня C# / Тест 8
Программирование на языке высокого уровня C# - тест 8
Упражнение 1:
Номер 1
С каким модификатором доступа должны быть описаны члены класса, чтобы к ним имели доступ только объекты самого класса?
Ответ:
 (1) protected
 
 (2) virtual protected
 
 (3) private
 
 (4) virtual
 
Номер 2
С каким модификатором доступа должны быть описаны члены класса, чтобы к ним имели доступ только объекты самого класса и объекты класса потомка?
Ответ:
 (1) protected
 
 (2) virtual protected
 
 (3) private
 
 (4) virtual
 
Номер 3
С каким модификатором доступа должны быть описаны члены класса, чтобы к ним имели доступ любые объекты?
Ответ:
 (1) protected
 
 (2) public
 
 (3) virtual protected
 
 (4) private
 
 (5) virtual
 
Упражнение 2:
Номер 1
В чем состоит процесс раннего связывания?
Ответ:
 (1) на место вызова подпрограммы компилятор вставляет переход на ее начало 
 (2) на место вызова подпрограммы компилятор вставляет адрес ее начала 
 (3) на место вызова подпрограммы компилятор вставляет ее код 
Номер 2
Когда происходит динамическое связывание?
Ответ:
 (1) на этапе компиляции программы 
 (2) на этапе компоновки программы 
 (3) на этапе выполнения программы 
 (4) при создании объектов 
Номер 3
Какое из следующих утверждений является примером полиморфизма?
Ответ:
 (1) класс включает данные с одинаковыми именами, но разными типами 
 (2) выражение, в котором ссылка на класс-потомок используется для вызова метода, определенного в базовом классе 
 (3) метод одного класса вызывает метод другого класса 
 (4) выражение, в котором вызывается виртуальный метод 
Упражнение 3:
Номер 1
Какое из следующих утверждений истинно для одноименных виртуальных методов одной иерархии?
Ответ:
 (1) виртуальные методы должны отличаться числом параметров 
 (2) виртуальные методы должны отличаться типом параметров 
 (3) виртуальные методы должны полностью совпадать по типу и числу параметров 
 (4) виртуальные методы должны отличаться типом возвращаемого значения 
Номер 2
Может ли конструктор быть виртуальным?
Ответ:
 (1) да 
 (2) нет 
Номер 3
Одна таблица виртуальных методов строится для каждого
Ответ:
 (1) класса 
 (2) экземпляра объекта 
 (3) метода объекта 
Упражнение 4:
Номер 1
Можно ли использовать в теле конструктора виртуальные методы?
Ответ:
 (1) да 
 (2) нет 
Номер 2
VMT создается
Ответ:
 (1) компилятором 
 (2) конструктором 
 (3) программистом 
 (4) отладчиком 
Номер 3
Можно ли при переопределении обычного метода в потомке изменить количество его аргументов?
Ответ:
 (1) да 
 (2) нет 
Упражнение 5:
Номер 1
Можно ли при переопределении виртуального метода в потомке изменить количество его аргументов?
Ответ:
 (1) можно в любом случае 
 (2) нет, если используется ключевое слово override 
 (3) да, если используется ключевое слово new 
Номер 2
Преимущества виртуальных методов:
Ответ:
 (1) гибкость 
 (2) увеличение быстродействия программы 
 (3) уменьшение объема исходного текста программы 
 (4) возможность расширения 
Номер 3
Если метод будет выполнять в потомках объекта одни и те же функции, его
следует описать как
Ответ:
 (1) виртуальный 
 (2) обычный 
Упражнение 6:
Номер 1
Можно ли передавать объект в метод в качестве параметра?
Ответ:
 (1) да 
 (2) нет 
Номер 2
Можно ли передать в подпрограмму на место аргумента-объекта объект,
являющийся его потомком?
Ответ:
 (1) да 
 (2) нет 
Номер 3
Методы, которые в разных объектах иерархии выполняют одно и то же по смыслу действие разными способами, следует объявлять как
Ответ:
 (1) статические 
 (2) виртуальные 
 (3) обычные 
Упражнение 7:
Номер 1
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public virtual void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public override void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public new void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) B.Write C.Write
 
 (2) A.Write A.Write
 
 (3) B.Write B.Write
 
 (4) A.Write C.Write
 
Номер 2
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public virtual void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public override void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public new void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) B.Write C.Write
 
 (2) A.Write B.Write
 
 (3) A.Write A.Write
 
 (4) B.Write B.Write
 
Номер 3
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public virtual void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public new void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public new void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) A.Write B.Write
 
 (2) A.Write A.Write
 
 (3) B.Write B.Write
 
 (4) A.Write C.Write
 
Упражнение 8:
Номер 1
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public virtual void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public new void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public new void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) B.Write C.Write
 
 (2) A.Write A.Write
 
 (3) B.Write B.Write
 
 (4) A.Write C.Write
 
Номер 2
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public virtual void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public override void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public override void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) B.Write C.Write
 
 (2) A.Write A.Write
 
 (3) B.Write B.Write
 
 (4) A.Write C.Write
 
Номер 3
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public virtual void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public override void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public override void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) B.Write C.Write
 
 (2) A.Write B.Write
 
 (3) A.Write A.Write
 
 (4) B.Write B.Write
 
Упражнение 9:
Номер 1
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public new void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public new void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) A.Write B.Write
 
 (2) A.Write A.Write
 
 (3) B.Write B.Write
 
 (4) A.Write C.Write
 
Номер 2
Что выведет на консоль приведенная программа?
namespace ConsoleApplication1{
class A{
public void WriteMessage(){
Console.Write("A.Write ");}
}
class B: A{
public new void WriteMessage(){
Console.Write("B.Write ");}
}
class C: B{
public new void WriteMessage(){
Console.Write("C.Write ");}
}
class Program{
static void Main(string[] args){
A x = new B();
x.WriteMessage();
x = new C();
x.WriteMessage();
}}}
Ответ:
 (1) B.Write C.Write
 
 (2) A.Write B.Write
 
 (3) A.Write A.Write
 
 (4) A.Write C.Write