Да, в языках программирования, поддерживающих функции высшего порядка, можно передавать функции в качестве объектов классов.
Однако, ответ на второй вопрос зависит от контекста и языка программирования, поскольку различные языки могут работать по-разному в этом отношении.
Например, в Python изменение ссылок внутри функции происходит, если объект является изменяемым, таким как список или словарь. В этом случае, при изменении значения внутри функции, изменение будет видно и извне.
Пример:
```python
def change_list(lst):
lst.append(4)
my_list = [1, 2, 3]
change_list(my_list)
print(my_list) # вывод: [1, 2, 3, 4]
```
Однако, если объект неизменяемый, например, число или строка, то изменение ссылки внутри функции не приведет к изменению значения извне.
Пример:
```python
def change_string(s):
s += " World"
my_string = "Hello"
change_string(my_string)
print(my_string) # вывод: Hello
```
Вывод изменился в первом случае, потому что список (lst) является изменяемым типом данных, а неизменяемая строка (s) осталась неизменной.
Таким образом, вопрос о том почему ссылки меняются или не меняются, зависит от особенностей языка программирования и типов данных, с которыми вы работаете.