Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Tuesday, June 22, 2010

Tính thừa kế trong lập trình hướng đối tượng


Chúng ta biết rằng, trong lập trình hướng đối tượng, các lớp có thể thừa kế lẫn nhau. Khi thừa kế, một lớp có thể có các thuộc tính và phương thức của lớp bố mẹ. Tính thừa kế trong lập trình hướng đối tượng chia làm hai dạng:

- Tính đơn thừa kế: Java, C#, Delphi,….

- Tính đa thừa kế: C++,…





Với tính đơn thừa kế, một lớp chỉ có thể thừ kế từ một lớp cơ sở. Điều này hoàn toàn khác so với tính đa thừa kế: một lớp có thể thừa kế từ nhiều lớp cơ sở. Tính đa thừa kế làm gia tăng sức mạnh cho các ngôn ngữ lập trình hướng đối tượng hỗ trợ nó. Tuy nhiên, nó lại làm cho ngôn ngữ trở nên cồng kềnh, phức tạp. Với tính đơn thừa kế, ngôn ngữ sẽ hiệu quả và rõ rang hơn. Tuy nhiên, đại đa số những nhà phát triển ngôn ngữ hướng đối tượng về sau đều nhận ra tính mạnh mẽ của đa thừa kế, do đó, họ đã đưa vào ngôn ngữ này (như Java, Delphi….) khái niệm giao diện Interface. Giao diện thực chất cũng là một lớp, nhưng nó chỉ chứa các phương thức ảo mà thôi. Chúng ta có thể xem ví dụ giao diện trong Java

public interface Human{

    public void talk();

}



public interface Animal{

    public void eat();

    public void run();

}



public class Student implements Human, Animal{

    public void talk(){

    }

    public void eat(){

    }

    public void run(){

    }

    public void learn(){

    }

}

Như bạn thấy, Lớp Student thực thi hai giao diện Human và Animal. Chính vì lẽ này, nó cần thực thi mọi phương thức của hai giao diện này. Ngoài ra, nó có thể bổ sung thêm các phương thức riêng (ở đây là phương thức learn).

2 comments:

  1. em Chào Thầy!
    vậy thì interface sinh ra chỉ để thay thế đa kế thừa thôi phải không Thầy?
    em cám ơn Thầy, Chúc Thầy một ngày vui vẻ

    ReplyDelete
  2. Không hẳn vậy. Nó còn giúp mở rộng khả năng thừ kế. Khả năng này thể hiện rõ trong việc thực thi các gia diện API. Ngoài ra, khi thiết kế đối tượng, ta biết chúng cần thực thi một số phương thức, nhưng chưa biết chính xác nó thực thi như thế nào thì ta dùng abstract class. Nếu là một class abstract hoàn toàn, thì nó là interface.

    ReplyDelete