Mam pytanie, chciałbym mając taki kod https://ideone.com/8AUOAR dowiedzieć się czy jest możliwość 'zniszczenia' funkcji inną funkcją? Dla przykładu, jeśli wywołam funkcję land_rocket(), to uniemożliwię ponowne wykorzystanie funkcji move(), move_side() czy move_up().
0
4
Czy nie prościej było by po prostu ustawić jakieś specjalne pole w klasie np. isMovePossible na określoną wartość, a następnie w odpowiednich funkcjach sprawdzać wartość tego pola?
3
@hit02 ma rację - nie powinieneś bawić się w żadne metaprogramowanie, tylko po ludzku pilnować stanów w metodach za to odpowiedzialnych.
Btw, dlaczego metoda distance
może zwrócić ciąg znaków? :|
4
Jeśli musisz tak zrobić to znaczy ze projekt jest zły, bo chcesz właśnie złamać zasadę Liskov Substitution.
0
Będzie dziedziczyć wszystkie funkcje - jedyne jak możesz to "spróbować obejść" to nadpisać pustą funkcją Void, tak żeby nic nie robiła.