Здравствуйте. Подскажите в каких ЯП присутствует возможность динамически локально переопределять методы класса?
Что-то вроде такого(слово public не писал просто, чтобы не мешалось, а так методы публичные):
class A {
    int id() {
        return 0;
    }
}
class App {
    static A make() {
        return new A();
    }
    
    static void print(A a) {
        System.out.println(a.id());
    }
    
    class B overrides A { // класс B равнозначен классу A,
        int id() {        // но переопределяет метод id()
            return 1;
        }
    }
    
    static void forObject(A a) {
        print(a); => 0
        print(a as B); // => 1
        print(a as A {
            int id() {
                return 2;
            }
        }); // => 2
        print(a); => 0
    }
    
    static void forClass(A a) {
        print(a); => 0
        override A as B;
        print(a); // => 1
        override A {
            int id() {
                return 2;
            }
        }
        print(a); // => 2
    }
    
    static void main(String[] args) {
    
        A a = make();
        print(a); => 0
        forObject(a);
        forClass(a);
        print(a); => 0
    }
}Или хотя бы часть из того, что есть в примере.
P.S. Классово/методовое ООП не обязательно, процедуры или функции тоже подойдут.
P.P.S. Кроме CL =)






