fork download
  1. class Parent {
  2. // 4. Constructor
  3. public Parent() {
  4. System.out.println("-> Constructor Parent dipanggil");
  5. }
  6.  
  7. // 1. Final Method: Tidak bisa di-override
  8. public final void methodFinal() {
  9. System.out.println("-> Ini Final Method dari Parent");
  10. }
  11.  
  12. // 2. Static Method: Milik class, bukan objek
  13. public static void methodStatic() {
  14. System.out.println("-> Ini Static Method dari Parent");
  15. }
  16.  
  17. // 3. Private Method: Tidak diwariskan ke Child
  18. private void methodPrivate() {
  19. System.out.println("-> Ini Private Method dari Parent");
  20. }
  21. }
  22.  
  23. class Child extends Parent {
  24. // Constructor
  25. public Child() {
  26. super(); // Memanggil constructor parent
  27. System.out.println("-> Constructor Child dipanggil");
  28. }
  29.  
  30. // ERROR! Hapus tanda komentar (//) di bawah ini untuk melihat error kompilasi
  31. // @Override
  32. // public void methodFinal() {
  33. // System.out.println("Mencoba override Final Method");
  34. // }
  35.  
  36. // METHOD HIDING (Bukan Overriding karena ini static)
  37. public static void methodStatic() {
  38. System.out.println("-> Ini Static Method dari Child (Hiding)");
  39. }
  40.  
  41. // METHOD BARU (Bukan Overriding karena Parent method-nya private)
  42. private void methodPrivate() {
  43. System.out.println("-> Ini method private independen milik Child");
  44. }
  45.  
  46. // Method bantuan untuk memanggil methodPrivate() agar bisa dites di main
  47. public void panggilPrivateChild() {
  48. this.methodPrivate();
  49. }
  50. }
  51.  
  52. public class Main {
  53. public static void main(String[] args) {
  54. System.out.println("=== DEMO BUKAN OVERRIDING ===\n");
  55.  
  56. System.out.println("1. Pemanggilan Constructor:");
  57. // Constructor tidak di-override, tapi constructor parent otomatis terpanggil
  58. Child anak = new Child();
  59.  
  60. System.out.println("\n2. Memanggil Final Method (Diwarisi, tidak bisa diubah):");
  61. anak.methodFinal();
  62.  
  63. System.out.println("\n3. Memanggil Static Method (Method Hiding, bukan Override):");
  64. Parent.methodStatic(); // Memanggil milik class Parent
  65. Child.methodStatic(); // Memanggil milik class Child
  66.  
  67. System.out.println("\n4. Memanggil Private Method (Bukan Override):");
  68. anak.panggilPrivateChild();
  69. }
  70. }
  71.  
  72. /*
  73. Cara mencoba error final method:
  74. Jika Anda ingin melihat langsung kenapa final method tidak bisa di-override, hapus tanda komentar (//) pada bagian @Override public void methodFinal() di dalam class Child, lalu coba jalankan lagi.
  75. Program akan langsung menolak untuk berjalan (Compile-time error).
  76. */
Success #stdin #stdout 0.06s 37912KB
stdin
Standard input is empty
stdout
=== DEMO BUKAN OVERRIDING ===

1. Pemanggilan Constructor:
-> Constructor Parent dipanggil
-> Constructor Child dipanggil

2. Memanggil Final Method (Diwarisi, tidak bisa diubah):
-> Ini Final Method dari Parent

3. Memanggil Static Method (Method Hiding, bukan Override):
-> Ini Static Method dari Parent
-> Ini Static Method dari Child (Hiding)

4. Memanggil Private Method (Bukan Override):
-> Ini method private independen milik Child