Friday, March 13, 2020

Java hướng đối tượng: Tính đa hình (Polymorphism) trong java

Đa hình là khả năng của một đối tượng có nhiều dạng. Việc sử dụng đa hình phổ biến nhất trong OOP xảy ra khi tham chiếu lớp cha được sử dụng để chỉ đối tượng lớp con.

Bất kỳ hướng đối tượng Java nào có thể vượt qua nhiều thử nghiệm IS-A đều được coi là đa hình. Trong Java, tất cả các đối tượng Java là đa hình vì bất kỳ đối tượng nào cũng sẽ vượt qua bài kiểm tra IS-A cho loại riêng của chúng và cho Đối tượng lớp.
Điều quan trọng cần biết là cách duy nhất có thể để truy cập một đối tượng là thông qua một biến tham chiếu. Một biến tham chiếu có thể chỉ có một loại. Sau khi khai báo, loại biến tham chiếu không thể thay đổi.
Tính đa hình (Polymorphism) trong java

Biến tham chiếu có thể được gán lại cho các đối tượng khác với điều kiện là nó không được khai báo cuối cùng. Kiểu của biến tham chiếu sẽ xác định các phương thức mà nó có thể gọi trên đối tượng.

Một biến tham chiếu có thể tham chiếu đến bất kỳ đối tượng nào thuộc kiểu khai báo của nó hoặc bất kỳ kiểu con nào của kiểu khai báo của nó. Một biến tham chiếu có thể được khai báo là một lớp hoặc loại giao diện.
Ví dụ về tính đa hinh trong java
public interface Vegetarian{}
public class Animal{}
public class Deer extends Animal implements Vegetarian{}
Bây giờ, lớp Deer được coi là đa hình vì điều này có nhiều sự kế thừa.
Trong Java, chúng ta sử dụng nạp chồng phương thức (method overloading) và ghi đè phương thức (method overriding) để có tính đa hình.
Nạp chồng (Overloading): Đây là khả năng cho phép một lớp có nhiều thuộc tính, phương thức cùng tên nhưng với các tham số khác nhau về loại cũng như về số lượng. Khi được gọi, dựa vào tham số truyền vào, phương thức tương ứng sẽ được thực hiện.

Ghi đè (Overriding): là hai phương thức cùng tên, cùng tham số, cùng kiểu trả về nhưng thằng con viết lại và dùng theo cách của nó, và xuất hiện ở lớp cha và tiếp tục xuất hiện ở lớp con. Khi dùng override, lúc thực thi, nếu lớp Con không có phương thức riêng, phương thức của lớp Cha sẽ được gọi, ngược lại nếu có, phương thức của lớp Con được gọi.
Sau đây là ví dụ về tính đa hình trong java:
public class Sum {
    public int sum(int x, int y)
    {
        return (x + y);
    }
    public int sum(int x, int y, int z)
    {
        return (x + y + z);
    }
    public double sum(double x, double y)
    {
        return (x + y);
    }
    public static void main(String args[])
    {
        Sum s = new Sum();
        System.out.println(s.sum(10, 20));
        System.out.println(s.sum(10, 20, 30));
        System.out.println(s.sum(10.5, 20.5));
    }

No comments:

Post a Comment