Sự khác nhau giữa overloading và overriding trong java
Sự khác nhau giữa overloading và overriding phương thức trong java được thể hiện trong bảng sau:
No. | Nạp chồng phương thức (overloading) | Ghi đè phương thức (overriding) |
---|---|---|
1) | Nạp chồng phương thức được sử dụng để giúp code của chương trình dễ đọc hơn. | Ghi đè phương thức được sử dụng để cung cấp cài đặt cụ thể cho phương thức được khai báo ở lớp cha. |
2) | Nạp chồng được thực hiện bên trong một class. | Ghi đè phương thức xảy ra trong 2 class có quan hệ kế thừa. |
3) | Nạp chồng phương thức thì tham số phải khác nhau. | Ghi đè phương thức thì tham số phải giống nhau. |
4) | Nạp chồng phương thức là ví dụ về đa hình lúc biên dịch. | Ghi đè phương thức là ví dụ về đa hình lúc runtime. |
5) | Trong java, nạp chồng phương thức không thể được thực hiện khi chỉ thay đổi kiểu giá trị trả về của phương thức. Kiểu giá trị trả về có thể giống hoặc khác. Giá trị trả về có thể giống hoặc khác, nhưng tham số phải khác nhau. | Giá trị trả về phải giống nhau. |
Ví dụ nạp chồng phương thức
1 2 3 4 5 6 7 8 9 | public class OverloadingExample { static int add( int a, int b) { return a + b; } static int add( int a, int b, int c) { return a + b + c; } } |
Ví dụ ghi đè phương thức
1 2 3 4 5 6 7 8 9 10 11 | class Animal { void eat() { System.out.println( "eating..." ); } } class Dog extends Animal { void eat() { System.out.println( "eating bread..." ); } } |