Главная / Программирование /
Программирование на Java / Тест 6
Программирование на Java - тест 6
Упражнение 1:
Номер 1
Какие модификаторы позволяют обращаться к элементу класса из классов-наследников того же пакета?
Ответ:
 (1) public
 
 (2) protected
 
 (3) по умолчанию 
 (4) private
 
Номер 2
Какие модификаторы позволяют обращаться к элементу класса из классов-наследников в другом пакете?
Ответ:
 (1) public
 
 (2) protected
 
 (3) по умолчанию 
 (4) private
 
Номер 3
Какие модификаторы позволяют обращаться к элементу класса из классов, не являющихся наследниками того же пакета?
Ответ:
 (1) public
 
 (2) protected
 
 (3) по умолчанию 
 (4) private
 
Упражнение 2:
Номер 1
Для каких элементов в Java
можно указать модификатор доступа?
Ответ:
 (1) для конструкторов класса 
 (2) для элементов ссылочных типов 
 (3) для пакетов 
 (4) для типов (классов и интерфейсов) объявления верхнего уровня 
Номер 2
Какие модификаторы доступа можно применить для типов объявления верхнего уровня?
Ответ:
 (1) private
 
 (2) default
 
 (3) protected
 
 (4) public
 
Номер 3
Какой модификатор доступа можно применить для пакета?
Ответ:
 (1) public
 
 (2) default
 
 (3) protected
 
 (4) private
 
 (5) никакой 
Упражнение 3:
Номер 1
Какие утверждения относительно заголовка класса верны?
Ответ:
 (1) допустимые модификаторы доступа для класса - public
или default
 
 (2) класс может быть объявлен как final
 
 (3) допустимо наследовать final
-класс 
 (4) допустима следующая цепочка наследования: A
наследует классу B
, B
наследует классу C
, C
наследует классу A
 
 (5) если не указан класс-предок класса, то это означает, что класс наследует от java.lang.Object
 
Номер 2
Какие варианты кода не вызовут ошибку компиляции?
Ответ:
 (1)
final class Parent {}
class FirstChild extends Parent {}
class SecondChild extends FirstChild {}
 
 (2)
class Parent {}
class FirstChild extends Parent {}
final class SecondChild extends FirstChild {}
 
 (3)
class Parent {}
final class FirstChild extends Parent {}
class SecondChild extends Parent {}
 
 (4)
class Parent {}
final class FirstChild extends Parent {}
class SecondChild extends FirstChild {}
 
 (5)
class Parent {}
final class FirstChild extends Parent {}
class SecondChild extends Object {}
 
Номер 3
Какие варианты кода не вызовут ошибку компиляции?
Ответ:
 (1)
class Parent {}
class FirstChild extends Parent {}
class SecondChild implements FirstChild {}
 
 (2)
class Parent {}
interface FirstChild {}
class SecondChild implements FirstChild {}
 
 (3)
class Parent {}
interface FirstChild extends Parent {}
class SecondChild implements FirstChild {}
 
 (4)
class Parent {}
interface FirstChild {}
interface SecondChild extends FirstChild {}
 
 (5)
class Parent {}
interface FirstChild {}
interface SecondChild implements FirstChild {}
 
Упражнение 4:
Номер 1
Какие утверждения относительно полей класса верны?
Ответ:
 (1) допускаются поля с одинаковыми именами, но с разными типами 
 (2) объявление полей начинается с перечисления модификаторов 
 (3) поле может быть проинициализировано только в конструкторе 
 (4) допускается инициализация final
полей в конструкторе класса 
Номер 2
Какие утверждения относительно полей класса верны?
Ответ:
 (1) числовое поле ссылочного типа имеет значение по умолчанию null
 
 (2) идентификатор при объявлении становится составным именем поля 
 (3) идентификатор поля при объявлении становится простым именем поля 
 (4) final
-поле может быть проинициализировано в конструкторе 
 (5) поля не могут иметь модификатор доступа protected
 
Номер 3
Что будет выведено на экран в результате выполнения следующего фрагмента кода:
public class SomeClass {
public static void main(String args[]) {
SomeClass s = new SomeClass();
System.out.println(s.x + ", " + s.y);
}
int getX() {
return x;
}
int y = getX();
int x = 3;
}
Ответ:
 (1) 3, 3
 
 (2) 3, 0
 
 (3) 0, 0
 
 (4) сообщение об ошибке компиляции 
 (5) ничего из перечисленного 
Упражнение 5:
Номер 1
Какие утверждения относительно методов класса верны?
Ответ:
 (1) методы не могут иметь модификатор доступа default
 
 (2) к методу, объявленному с модификаторами public final
, нельзя обратиться из класса-наследника 
 (3) метод, объявленный с модификатором native
, должен быть написан на другом языке программирования 
 (4) идентификатор метода при объявлении становится составным именем метода 
 (5) метод, объявленный с модификатором final
, не может быть переопределен в классе-наследнике 
Номер 2
Укажите правильные варианты объявления метода.
Ответ:
 (1) void doSomething(int x, y);
 
 (2) void doSomething(int x, int y);
 
 (3) void doSomething(int x, double y);
 
 (4) void doSomething(int x; double y);
 
 (5) void doSomething(int x; y);
 
Номер 3
Укажите варианты кода, которые не вызовут ошибки компиляции.
Ответ:
 (1)
public void doSomething(int x, final int y) {
x = Math.abs(y);
}
 
 (2)
public void doSomething(int x, final int y) {
y = Math.abs(y);
}
 
 (3)
public void doSomething(int x, final int y) {
x = Math.abs(y);
return;
}
 
 (4)
public void doSomething(int x, final int y) {
x = Math.abs(y);
return x;
}
 
 (5)
public void doSomething(int x, final int y) {
y = Math.abs(x);
return;
}
 
Упражнение 6:
Номер 1
Какие утверждения относительно конструкторов класса верны?
Ответ:
 (1) конструктор может иметь модификатор доступа final
 
 (2) имя конструктора должно совпадать с названием класса 
 (3) если конструктор выполнился без ошибок, то объект гарантированно создается 
 (4) конструктор не может содержать return
-выражение 
 (5) чтобы обратиться к конструктору родительского класса необходимо использовать ключевое слово this
 
Номер 2
Какие утверждения относительно конструкторов класса верны?
Ответ:
 (1) чтобы обратиться к конструктору родительского класса необходимо использовать ключевое слово super
 
 (2) в одном классе допускается любое количество конструкторов, если у них различные сигнатуры 
 (3) конструктор не может генерировать исключения 
 (4) выражение super
может стоять на любой строке конструктора 
 (5) если в классе не объявлен ни один конструктор, компилятор добавляет один по умолчанию 
Номер 3
Какие варианты кода не приведут к ошибке компиляции?
Ответ:
 (1)
public class SomeClass {
public SomeClass(int x, int y) {
this.x = x;
this.y = y;
super();
}
int x, y;
}
 
 (2)
public class SomeClass {
public SomeClass(int x, int y) {
super();
this.x = x;
this.y = y;
}
int x, y;
}
 
 (3)
public class SomeClass {
public SomeClass(int x, int y) {
super();
this.x = x;
this.y = y;
}
public SomeClass() {
super();
this(0, 0);
}
int x, y;
}
 
 (4)
public class SomeClass {
public SomeClass(int x, int y) {
super();
this.x = x;
this.y = y;
}
public SomeClass() {
this(0, 0);
}
int x, y;
}
 
 (5)
public class SomeClass {
public SomeClass(int x, int y) {
this(x, y);
}
int x, y;
}
 
Упражнение 7:
Номер 1
Какие утверждения относительно инициализаторов класса верны?
Ответ:
 (1) инициализаторы не имеют имен 
 (2) если в классе есть два конструктора и один из них вызывается из второго, то инициализатор будет вызван дважды 
 (3) при вызове конструктора сначала выполняется код конструктора, а потом код инициализатора 
 (4) при вызове конструктора сначала выполняется код инициализатора, а потом код конструктора 
Номер 2
Какие утверждения относительно инициализаторов класса верны?
Ответ:
 (1) инициализаторы могут быть унаследованы 
 (2) если в классе есть несколько инициализаторов, то порядок их вызова не определен 
 (3) если в классе есть два конструктора и один из них вызывается из второго, то инициализатор будет вызван только один раз 
 (4) при вызове конструктора сначала выполняется код инициализатора, а потом код конструктора 
 (5) инициализатор может иметь имя 
Номер 3
Что будет выведено на экран в результате выполнения следующего кода?
public class SomeClass {
public static void main(String args[]) {
SomeClass2 s = new SomeClass2();
}
public SomeClass() {
System.out.print("1");
}
{
System.out.print("2");
}
}
class SomeClass2 extends SomeClass {
public SomeClass2() {
System.out.print("3");
}
{
System.out.print("4");
}
}
Ответ:
 (1) 1243
 
 (2) 2143
 
 (3) 1234
 
 (4) 2134
 
 (5) 3421
 
Упражнение 8:
Номер 1
Укажите правильный вариант объявления метода main
- точку входа в программу на языке Java
.
Ответ:
 (1) public void main(String args[])
 
 (2) public static void main(String args)
 
 (3) public void main(String args)
 
 (4) public static void main(String[] args)
 
 (5) public static void main()
 
Номер 2
Укажите правильные варианты объявления перегруженных методов.
Ответ:
 (1)
public int doSomething(int a) {return 5;}
public double doSomething() {return 5;}
 
 (2)
public int doSomething(int a) {return 5;}
public double doSomething(int a) {return 5;}
 
 (3)
public int doSomething(int a) {return 5;}
private double doSomething(int b) {return 5;}
 
 (4)
public int doSomething(int a) {return 5;}
private double doSomething(int a, int b) {return 5;}
 
Номер 3
Укажите результат выполения следующего кода:
public class SomeClass {
public static void main(String[] args) {
SomeClass s = new SomeClass("5", "6");
SomeClass s1 = new SomeClass("10", "12");
s1.doSomething(s);
System.out.print(s1.x + s1.y + s.x + s.y);
}
private void doSomething(SomeClass s) {
s.x = "5";
this.y = "6";
}
public SomeClass(String x, String y) {
this.x = x;
this.y = y;
}
String x, y;
}
Ответ:
 (1) 5656
 
 (2) 101256
 
 (3) 10656
 
 (4) будет выведена ошибка компиляции 
 (5) ни один из перечисленных