Di kelas Java metode dapat didefinisikan final
, untuk menandai bahwa metode ini mungkin tidak diganti:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
Itu jelas, dan mungkin berguna untuk melindungi dari pengesampingan yang tidak disengaja, atau mungkin kinerja - tapi itu bukan pertanyaan saya.
Pertanyaan saya adalah: Dari sudut pandang OOP saya mengerti bahwa, dengan mendefinisikan suatu metode final
, perancang kelas menjanjikan metode ini akan selalu berfungsi seperti yang dijelaskan, atau tersirat. Namun seringkali ini mungkin berada di luar pengaruh penulis kelas, jika apa yang dilakukan metode ini lebih rumit daripada hanya memberikan properti .
Batasan sintaksis jelas bagi saya, tetapi apa implikasinya dalam arti OOP? Apakah final
digunakan dengan benar dalam pengertian ini oleh sebagian besar penulis kelas?
"Kontrak" apa yang final
dijanjikan metode?