Практика на интерфейсы в Java
Дан интерфейс:
interface Named {
String getName();
}
Сделайте класс Employee, реализующий
интерфейс Named.
Выведите getName() для "Oslo".
Даны интерфейсы:
interface Printable {
String printLine();
}
interface Storable {
boolean save();
}
Сделайте класс Document, реализующий
оба интерфейса.
Пусть printLine() возвращает "doc",
а save() - true.
Выведите оба результата.
Дан интерфейс:
interface Clock {
String now();
default String stamp() {
return "@" + now();
}
}
Сделайте класс FixedClock, который
возвращает "12:00" из now().
Выведите stamp() без переопределения
stamp.
Сделайте интерфейс Desc, наследующий
Named, и добавьте метод
blurb().
Сделайте класс Product с именем
и методом blurb(), возвращающим
getName() и "!".
Выведите blurb для "tea".
Даны типы:
interface Scored {
int getScore();
}
class Entry implements Scored {
private final int score;
Entry(int score) {
this.score = score;
}
@Override
public int getScore() {
return score;
}
}
Объекты Entry уже лежат в списке, по нему посчитаем сумму:
import java.util.List;
List<Scored> rows = List.of(new Entry(3), new Entry(7), new Entry(5));
Выведите сумму getScore() всех записей.
Сделайте интерфейс Resettable
с методом reset().
Сделайте класс Counter, который хранит
value и реализует Resettable.
Увеличьте значение до 4, сбросьте,
выведите value.
Даны типы:
interface A {
default String tag() {
return "A";
}
}
interface B {
default String tag() {
return "B";
}
}
Сделайте класс Both, реализующий
A и B, и верните из tag()
строку "AB".
Выведите результат.
Сделайте интерфейс Validator
с методом ok(String text).
Сделайте NonEmpty, принимающий только
непустые строки.
Проверьте "" и "hi",
выведите оба ответа.
Дан фрагмент:
interface HasId {
long getId();
}
void showId(Object x) {
if (x instanceof HasId hasId) {
System.out.println(hasId.getId());
} else {
System.out.println(0L);
}
}
Вызовите showId для анонимной реализации
HasId с id = 9 и для строки "x".
Сделайте интерфейс Formatter
со static-методом hex(int n),
возвращающим шестнадцатеричную строку
без префикса.
Выведите результат для 255.