Friday, March 13, 2020

Java hướng đối tượng: Ghi đè (override) Phương thức trong Java

Chúng ta đã nói về siêu lớp và các lớp con. Nếu một lớp kế thừa một phương thức từ siêu lớp của nó, thì có khả năng ghi đè phương thức với điều kiện là nó không được đánh dấu cuối cùng.
Lợi ích của việc ghi đè là: khả năng xác định một hành vi dành riêng cho loại lớp con, có nghĩa là một lớp con có thể thực hiện một phương thức lớp cha dựa trên yêu cầu của nó.
Trong thuật ngữ hướng đối tượng java, ghi đè có nghĩa là ghi đè chức năng của một phương thức hiện có.
Ghi đè (override) Phương thức trong Java

Sau đây là ví dụ về phương thức ghi đè trong java:
class Animal{
public void move(){
System.out.println("Animals can move");
}
}
 class Dog extends Animal{
public void move(){
System.out.println("Dogs can walk and run");
}
}
public class BT2 {
public static void main(String []args){
Dog dog = new Dog();
dog.move();
}

}
Kết quả :
Dogs can walk and run

Quy tắc ghi đè phương thức


  • Danh sách đối số phải giống hệt như phương thức được ghi đè.
  • Kiểu trả về phải giống hoặc một kiểu con của kiểu trả về được khai báo trong phương thức ghi đè ban đầu trong lớp bậc trên.
  • Mức truy cập không thể hạn chế hơn mức truy cập của phương thức bị ghi đè. Ví dụ: Nếu phương thức siêu lớp được khai báo công khai thì phương thức ghi đè trong lớp con có thể là riêng tư hoặc được bảo vệ.
  • Các phương thức sơ thẩm chỉ có thể được ghi đè nếu chúng được kế thừa bởi lớp con.
  • Một phương thức được tuyên bố cuối cùng không thể được ghi đè.
  • Một phương thức khai báo tĩnh không thể bị ghi đè nhưng có thể được khai báo lại.
  • Nếu một phương thức không thể được kế thừa, thì nó không thể bị ghi đè.
  • Một lớp con trong cùng một gói như siêu lớp của cá thể có thể ghi đè bất kỳ phương thức siêu lớp nào không được khai báo là riêng tư hoặc cuối cùng.
  • Một lớp con trong một gói khác chỉ có thể ghi đè các phương thức không phải là cuối cùng được khai báo công khai hoặc được bảo vệ.
  • Một phương thức ghi đè có thể đưa ra bất kỳ trường hợp ngoại lệ nào, bất kể phương thức được ghi đè có ném ngoại lệ hay không. Tuy nhiên, phương thức ghi đè không được đưa ra các ngoại lệ được kiểm tra là mới hoặc rộng hơn so với phương pháp được ghi đè bằng phương thức ghi đè. Phương thức ghi đè có thể đưa ra các ngoại lệ hẹp hơn hoặc ít hơn so với phương thức ghi đè.
  • Con constructor không thể bị ghi đè.

No comments:

Post a Comment