Avatar
2
Nguyen An Beginner
Nguyen An Beginner
Hướng đối tượng: so sánh tính đa hình và tính trừu tượng ?
Mọi người giúp em giải thích câu sau với ạ !

So sánh tính đa hình và tính trừu tượng ?

  • Answer
.net oop
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
  1. Đa hình nghĩa là em có thể dùng nhiều kiểu dữ liệu khác nhau cho một đối tượng, ví dụ, em có 3 lớp đại diện cho động vật, động vật biết bơi và con cá thế này:

interface DongVat
{
    void An();
}

interface DongVatSongDuoiNuoc : DongVat
{
    void Boi();
}

class ConCa : DongVatSongDuoiNuoc
{
    public void An() { }

    public void Boi() { }
}

Thì em có thể khai báo thế này:

ConCa conCa = new ConCa();
DongVat dongVat = conCa;
DongVatSongDuoiNuoc dongVatSongDuoiNuoc = conCa;

Em có thể thấy rằng mình có thể khai báo biến kiểu DongVat, DongVatSongDuoiNuoc cho conCa đều được hết.

  1. Trìu tượng có nghĩa rằng em sẽ không biết được chính xác hoạt động của 1 hàm hay một lớp như thế nào cho đến khi em sử dụng lớp cài đặt nó. Ví dụ ở trên em không thể biết hàm Ăn và Bơi sẽ hoạt động thế nào cho đến khi em sử dụng lớp con cá là động vật vừa biết ăn lại vừa biết bơi. Nhưng nếu bây giờ anh thêm 1 lớp con bò thì hàm bơi lại hoạt động khác đi, nó sẽ ném ra Exception vì con bò không biết bơi:


class ConBo: DongVatSongDuoiNuoc
{
    public void An() { }

    public void Boi() {
        throw new Exception("Con bo khong biet boi");
    }
}
  • 1
  • Reply
vậy anh ơi, vì sao anh sử dụng interface mà không dùng abstract class DongVat để thể hiện. Nói đến abstract class, khi nào mình dùng class thông thường và khi nào mình dùng abstract class để extend  –  Nguyễn Thái Sơn 1664594337000
  1. Vì trong ví dụ này anh không có cài đặt gì ở hàm An(), cũng không có cài đặt gì ở lớp DongVat nên anh để interface.
  2. Em đặt riêng câu hỏi cho mục "Nói đến abstract class ..." nhé
 –  tvd12 1664611502000