Giả sử có lớp cơ sở A
và lớp dẫn xuất B
.
Lớp A
có hai chức năng: fun1()
và fun2()
, trong đó fun1()
các cuộc gọi fun2()
.
Lớp B
ghi đè fun1()
và fun2()
, và một lần nữa fun1()
gọi fun2()
.
Tuy nhiên, tôi muốn gọi base.fun1()
overriden fun2()
. Vì base.fun1()
các cuộc gọi fun2()
thay vì phiên bản của lớp cơ sở tạo ra vòng lặp khá đáng tiếc:
fun1() -> fun2() -> base.fun1() -> fun2() -> base.fun1() -> ...
Có cách nào để buộc base.fun1()
phải gọi phiên bản cơ sở của fun2()
? Tôi biết rằng vấn đề thực sự có lẽ nằm ở thiết kế tồi của các lớp đó, nhưng tôi vẫn tò mò liệu điều đó có thể xảy ra hay không.
fun1() -> fun2() -> base.fun1() -> base.fun2()
. Thật không may, sau khi ghi đèbase.fun2()
, cácbase.fun1()
cuộc gọifun2()
thay thế.