Структуры (записи)

interface IText {
    String toText();
}

record Point(int x, int y) implements IText {

    @Override
    public String toText() {
        return String.format(
            "x = %s; y = %d", x, y);
    }
}

record RedPoint() implements Point {} //<-Error

var p = new Point(45);
System.out.println(p.toText());