WorksheetsJava 151-200
Total questions: 50
Worksheet time: 25mins
Как обычно называют геттер?
getИмяПоля()
setИмяПоля()
showИмяПоля()
readИмяПоля()
printИмяПоля()
Как обычно называют сеттер?
setИмяПоля(значение)
getИмяПоля()
changeИмяПоля()
writeИмяПоля()
updateИмяПоля()
Ключевое слово this ссылается на
текущий объект
родительский класс
статический метод
новый объект
имя класса
Имя конструктора должно
полностью совпадать с именем класса
быть main
начинаться с new
быть произвольным
начинаться с create
Можно ли иметь несколько конструкторов в одном классе?
да, перегрузка конструкторов разрешена
нет, только один конструктор
только один без параметров
только один с параметрами
только копирующий конструктор
Порядок инициализации при создании объекта
поля → блок инициализации → тело конструктора
конструктор → поля → блок
main → поля → конструктор
static-блок → поля → конструктор
finalize → поля → конструктор
Методы класса описывают
поведение объекта
состояние объекта
идентификатор объекта
наследника объекта
пакет объекта
Как в NetBeans быстро создать новый класс?
File → New File → Java Class
Run → New Project
Tools → Create Class
Debug → New Class
Window → New Class
Что выведет код?
```java
class Test {
private String s = "Исходное";
{ s = "Блок инициализации"; }
Test() { s = "Конструктор"; }
public String getS() { return s; }
}
public class Main {
public static void main(String[] args) {
System.out.println(new Test().getS());
}
}
```
Конструктор
Блок инициализации
Исходное
null
ошибка компиляции
Что выведет код?
```java
class A {
private int x = 10;
A() { this(5); x = 20; }
A(int x) { this.x = x; }
public int getX() { return x; }
}
public class Main {
public static void main(String[] args) {
System.out.println(new A().getX());
}
}
```
5
10
20
рекурсия
ошибка: this() должен быть первым
Какое ключевое слово используется для наследования класса в Java?
extends
implements
inherits
super
include
Как называется класс, от которого наследуются?
родительский класс (суперкласс)
дочерний класс (подкласс)
интерфейс
абстрактный класс
финальный класс
Как называется класс, который наследует?
дочерний класс (подкласс)
родительский класс
главный класс
базовый класс
корневой класс
Какое ключевое слово используется для вызова конструктора родителя?
super()
this()
parent()
base()
extends()
Какое ключевое слово используется для вызова метода родителя?
this.метод()
parent.метод()
base.метод()
extends.метод()
Переопределение метода в дочернем классе обозначается аннотацией
@Override
@Overload
@Inherited
@Super
@Extends
Какой модификатор запрещает наследование класса?
final
private
static
abstract
protected
Какой модификатор запрещает переопределение метода?
final
private
static
abstract
public
Полиморфизм в Java --- это
способность объекта вести себя по-разному в зависимости от фактического типа
наличие нескольких методов с одинаковым именем
сокрытие данных
создание копий объектов
преобразование типов
Как называется возможность присваивать объект подкласса переменной суперкласса?
полиморфизм (восходящее преобразование)
нисходящее преобразование
инкапсуляция
перегрузка
статический полиморфизм
Какое ключевое слово запрещает создание объектов класса, но разрешает наследование?
abstract
final
static
private
protected
Можно ли наследоваться от нескольких классов в Java?
нет, только от одного класса
да, сколько угодно
да, но только через implements
да, только через интерфейсы
да, только если они final
Какой класс является родителем всех классов в Java?
Object
Class
System
Main
Root
Метод toString() наследуется от класса
Object
String
System
Throwable
Runtime
Метод equals() и hashCode() рекомендуется переопределять вместе из класса
Object
String
Integer
Class
System
Если в дочернем классе не вызвать super() в конструкторе, то
автоматически вызывается конструктор без параметров родителя
будет ошибка компиляции
вызывается конструктор с параметрами
вызывается Object()
ничего не вызывается
Какой аннотацией помечается метод, который должен быть переопределён в подклассе?
@Override
@MustOverride
@Abstract
@Required
@ForceOverride
Динамический полиморфизм реализуется через
переопределение методов и ссылки суперкласса
перегрузку методов
статические методы
private методы
final методы
Что выведет код?
```java
class A { public String show() { return "A"; } }
class B extends A { public String show() { return "B"; } }
class C extends B { public String show() { return "C"; } }
public class Main {
public static void main(String[] args) {
A obj = new C();
System.out.println(obj.show());
}
}
```
C
A
B
ABC
ошибка выполнения
Скомпилируется ли и что выведет?
```java
class Parent {
private void hello() { System.out.println("Parent"); }
}
class Child extends Parent {
public void hello() { System.out.println("Child"); }
}
public class Main {
public static void main(String[] args) {
Parent p = new Child();
// p.hello(); // раскомментировать
}
}
```
не скомпилируется (private метод нельзя переопределить)
выведет Child
выведет Parent
ошибка во время выполнения
скомпилируется, но ничего не выведет
Как объявляется абстрактный класс?
abstract class ИмяКласса
interface ИмяКласса
final class ИмяКласса
public class ИмяКласса
static class ИмяКласса
Можно ли создать объект абстрактного класса?
Нельзя, создание объектов запрещено
Можно, обычным new
Только в статическом блоке
Только через интерфейс
Только в финальном классе
Что такое абстрактный метод?
Метод без тела, только объявление
Метод с телом, но без возврата
private метод
static метод
final метод
Где обязательно реализовать абстрактный метод?
В конкретном дочернем классе
В самом абстрактном классе
В интерфейсе
В классе Object
В классе Main
Как объявляется интерфейс?
interface ИмяИнтерфейса
abstract class ИмяИнтерфейса
public interface ИмяИнтерфейса
class ИмяИнтерфейса
enum ИмяИнтерфейса
До Java 7 в интерфейсе могли быть только
абстрактные методы и константы
конструкторы
обычные поля
private методы
статические блоки
С Java 8 в интерфейсах появились
default- и static-методы с реализацией
конструкторы
private поля
final методы
protected методы
С Java 9 в интерфейсах появились
private методы
protected методы
final поля
конструкторы
обычные статические поля
Как класс реализует интерфейс?
implements ИмяИнтерфейса
extends ИмяИнтерфейса
inherits ИмяИнтерфейса
uses ИмяИнтерфейса
include ИмяИнтерфейса
Может ли один класс реализовать несколько интерфейсов?
Да, через запятую в implements
Нет, только один интерфейс
Только один абстрактный класс
Только один финальный класс
Только Object
Главное отличие абстрактного класса от интерфейса
В абстрактном классе могут быть поля-состояния (до Java 8 в интерфейсах их не было)
В интерфейсе есть конструктор
В абстрактном классе нет default-методов
Интерфейс наследуется через extends
Абстрактный класс реализуется через implements
Где можно писать реализацию default-метода?
Прямо в интерфейсе
Только в дочернем классе
Только в абстрактном классе
Только в Object
Только в Main
Если не переопределить метод интерфейса
будет использована default-реализация (если есть)
ошибка компиляции
метод останется абстрактным
возьмётся из Object
ничего не выполнится
Маркерный интерфейс --- это
интерфейс без методов (например, Serializable)
только с default-методами
только с private-методами
только со static-методами
только с абстрактными методами
Функциональный интерфейс --- это
интерфейс ровно с одним абстрактным методом
с несколькими default-методами
без методов вообще
только со static-методами
с конструктором
Для чего нужна аннотация @FunctionalInterface?
Чтобы компилятор проверил наличие ровно одного абстрактного метода
Для записи лямбда-выражений
Чтобы скрыть default-методы
Чтобы сделать интерфейс final
Чтобы сделать интерфейс abstract
197. Константы в интерфейсе объявляются как
public static final (автоматически)
private int x
protected String s
default double d
void const
Главное отличие абстрактного класса от обычного
В нём могут быть абстрактные методы
В обычном нет конструктора
В абстрактном нет полей
В обычном нельзя наследоваться
В абстрактном нельзя final-методы
Что выведет код?
```java
interface A { default void show() { System.out.println("A"); } }
interface B { default void show() { System.out.println("B"); } }
class C implements A, B {
public void show() { A.super.show(); }
}
public class Main {
public static void main(String[] args) {
new C().show();
}
}
```
A
B
AB
ошибка компиляции
ошибка выполнения
Скомпилируется ли код?
```java
abstract class X {
abstract void test();
}
interface Y {
default void test() { System.out.println("Y"); }
}
class Z extends X implements Y { } // test() не реализован
public class Main {
public static void main(String[] args) {
new Z().test();
}
}
```
Да, будет использован default-метод из Y
Нет, абстрактный метод обязательно нужно реализовать
Да, но ничего не выведет
Нет, конфликт множественного наследования
Нет, default-метод нужно обязательно переопределить
