Abstract class và interface ???

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 พ.ย. 2024

ความคิดเห็น • 75

  • @kieuvo6386
    @kieuvo6386 ปีที่แล้ว +2

    4:50 anh ơi is-a thôi ạ. Và Has-a là class này có thành phần là class khác ạ!

    •  ปีที่แล้ว

      Thì nói về cả 2 phía mà

    • @kieuvo6386
      @kieuvo6386 ปีที่แล้ว

      @ dạ ý em là ở đây chỉ có mối quan hệ is a thôi, không có has-a gì cả ạ!

    •  ปีที่แล้ว

      @@kieuvo6386 Employee làm sao lại là is a Work đc e?

    • @kieuvo6386
      @kieuvo6386 ปีที่แล้ว

      ​@ ​😂😂😂
      Không anh ơi. Ý em cái extend từ abstract class là is a thì đúng!
      Nhưng sao impl từ interface là has-a ạ?
      Theo như em biết thì has-a phải là thuộc tính của class này là 1 class khác ạ.
      Còn impl từ 1 interface nó cũng có phần giống như extend từ abstract class vậy, ta tạm xem nó như is-a thì đúng hơn á!

    • @kieuvo6386
      @kieuvo6386 ปีที่แล้ว

      @ "Interface là một kỹ thuật để thu được tính trừu tượng hoàn toàn và đa kế thừa trong các ngôn ngữ mà hướng đối tượng chỉ hỗ trợ đơn kế thừa. Interface cũng biễu diễn mối quan hệ IS-A."

  • @manhhungpham1294
    @manhhungpham1294 2 ปีที่แล้ว +36

    Abstract class giống class bình thường nhưng có thêm các abstract method, có thể dùng luôn hoặc để cho các class khác extend. Tức là một đằng đẻ ra phương thức và thuộc tính để nó dùng và để cho người khác dùng, vì thế nó cũng có thể kế thừa class và implements interface.
    Interface không có thuộc tính, chỉ chứa các abstract method, không dùng được method đó ngay trong interface đó mà phải dùng thông qua một class khác đã được implements các method của interface đó. Tức là đằng này đẻ ra phương thức chỉ để cho người khác(đã có sẵn thuộc tính) dùng, vì thế nó cũng chỉ có thể kế thừa interface mà không thể kế thừa class.

    • @ChiPham-hr3xl
      @ChiPham-hr3xl ปีที่แล้ว +1

      tác dụng của interface ngoài dùng để hỗ trợ đa kế thừa ra thì còn dùng để làm gì nữa không ạ, em có thắc mắc

    • @hungkm201
      @hungkm201 ปีที่แล้ว +1

      uây, tóm tắt đỉnh luôn

    • @tuyenbui9514
      @tuyenbui9514 10 หลายเดือนก่อน +22

      Bạn nói đúng về cách sử dụng nó, nhưng chưa nói lên được mục đích chính của Abstract class và Interface.
      Abstract class dùng để TỔNG QUÁT (Generalize) hóa các hành vi của các đối tượng. Interface dùng để CHUẨN HÓA (Standardize) hành vi của các đối tượng.
      ** Abstract class: giả sử chúng ta có các đối tượng về động vật: Dog, Cat, Chicken, chúng ta nhìn thấy những điểm chung của các đối tượng này: Name, NumberOfLeg, Color..., có hành động Eat(), Run(), MakeSound()... Và chúng ta sẽ tạo ra lớp cơ sở động vật Animal như sau
      public abstract class Animal{
      public string Name {get;set;}
      public string Color{get;set;}
      public int NumberOfLeg{get;set;}
      public abstract void Eat(){}
      public abstract void Run(){}
      public abstract void MakeSound(){}
      }
      Đối với mỗi loại động vật cụ thể, chúng ta lại có những implementation riêng => cho phép ghi đè phương thức gốc của lớp cơ sở - thêm public void virtual Eat(), Run(), MakeSound(). Như vậy, những lớp con cần phải thực thi lại những hành động này. Đó là lý do mình nói là Abstract class dùng để tổng quát hóa các hành vi.
      ** Interface dùng để chuẩn hóa các hành vi. Ví dụ, đối với động vật, chúng ta có thể chia thành bọn có thể bơi ISwimable, có thể đi bộ IWalkable, có thể bay IFlyable. Trong mỗi interface này chúng ta định nghĩa ra các phương thức, thuộc tính mang tính chất thiết kế ở mức high level.
      interface ISwimable {
      void Swim();
      void Dive();
      }
      interace IFlyable{
      void Fly();
      void TakeOff();
      void Land();
      }
      Các interface đang chuẩn hóa cách hành vi của một nhóm đối tượng cụ thể.
      Ta có thể sử dụng Interface và abstract class như sau
      - Dog : Animial, ISwimable, IWalkable{}
      - Duck: Animial, ISwimable, IWalkable, IFlyable{}

    • @evileyes9317
      @evileyes9317 7 หลายเดือนก่อน

      @@tuyenbui9514 Hix, một comment này đã hơn lun video 11 phút r :D. Thanks b.!

    • @vietdao336
      @vietdao336 5 หลายเดือนก่อน

      ​@@tuyenbui9514 cho mk hỏi là abstract vs interface thì cái nào đạt đc tính trừu tượng hơn ạ , nếu bn vd luôn thì mk tks nha

  • @nguyenhoanghuy8456
    @nguyenhoanghuy8456 4 ปีที่แล้ว +1

    Vào một ngày đẹp trời 08/10/2020, em đang mò mẫm nutget package opendnp3 , đang thắc mắc về interface và class. Liền lên youtube tìm thử thì xem được video của anh. Xem xong thấy mình lân lân như phê cần cmnl. Haizz

  • @udemytiengviet956
    @udemytiengviet956 4 ปีที่แล้ว +2

    xem lúc tháng 6. tới tháng 12 xem lại mới hiểu :)) Video cực hay dễ hiểu . Hi vọng lần sau a vừa nói vừa code mẫu thì perfect

  • @nguyenlam-yz7ep
    @nguyenlam-yz7ep ปีที่แล้ว

    Anh vừa nói vừa có ví dụ bằng code thì quá tuyệt

  • @trunguc1405
    @trunguc1405 ปีที่แล้ว

    em học trên lớp xong phần nào còn tối nghĩa coi anh dễ hiểu lắm ạ. nhất là cái đệ quy, trên trường với anh đều ví dụ về giai thừa, nhưng anh giải thích e hiểu ngay

  • @thuonghd3101
    @thuonghd3101 4 ปีที่แล้ว +5

    Hay quá anh ạ, e cũng bắt đầu làm việc với OOP mà khá hơi mông lung về abstract class và interface, thích cách nhấn nhá của anh, cảm giác anh có khả năng sư phạm luôn í ^^ Cảm ơn anh nhiều ạ

  • @cangxanhtom6797
    @cangxanhtom6797 3 ปีที่แล้ว +5

    1 class chỉ có kế thừa 1 và chỉ 1 class thôi (extends), nhưng 1 class có thể implenment nhiều interface.

  • @sonhango1265
    @sonhango1265 2 ปีที่แล้ว

    nghe đi nghe lại chục lần là hiểu liền hehe . tks ông dev

  • @manhhungkhong2667
    @manhhungkhong2667 3 ปีที่แล้ว

    Quá tuyệt vời luôn. Kiểu được khai thông đầu óc luôn

  • @trungmaingoc8528
    @trungmaingoc8528 2 ปีที่แล้ว

    ông anh diễn giải hay vãi.. nếu các bạn mới có thể hơi mông lung , nhưng hiểu cơ bản thì thấy gắn gọn xúc tích

  • @khatranbao6787
    @khatranbao6787 2 ปีที่แล้ว +2

    Em thấy 1 ứng dụng khá hay của interface mà hồi em học java thì em dùng nó khá nhiều. Đó chính là khi 1 hàm yêu cầu param là 1 object và object đó bắt buộc phải có 1 hàm nào đó. Ví dụ như trong java có hàm sort gần giống với sort trong js đi, để có thể gọi hàm sort này trên 1 list các object thì các object này phải implement interface comparable của java.

    • @bestmomentsofgamer2130
      @bestmomentsofgamer2130 ปีที่แล้ว

      bjan học ở đâu java v

    • @hometrier9140
      @hometrier9140 23 วันที่ผ่านมา

      @@bestmomentsofgamer2130 học trên internet á bạn😊

  • @linhuchiha7440
    @linhuchiha7440 3 ปีที่แล้ว

    Video hay và anh nói chi tiết quá. Em cảm ơn anh nhiều

  •  4 ปีที่แล้ว +5

    Phải đi nghiên cứu về nghệ thuật trừu tượng để làm cái hình nền đấy ae ạ :v

  • @trieuvt5510
    @trieuvt5510 2 ปีที่แล้ว

    Video hay như này mà không làm playlist full về OOP thì quá là phí!

  • @tienduongmr
    @tienduongmr 3 ปีที่แล้ว

    Tuyệt vời quá anh ơi, thả tim cho a

  • @nguyenmanh8330
    @nguyenmanh8330 3 ปีที่แล้ว

    Khi có thằng em nào đó hỏi câu ni thì mình lại gửi cái link này, thật sự khoẻ quá :V

  • @khamblue
    @khamblue 3 ปีที่แล้ว +1

    Video nói khá chi tiết tuy nhiên những tấm chiếu mới như em nghe a nói thì khá khó hiểu vì chưa rõ về Interface và Abstract. Nếu như có hình minh họa hay code minh họa sẽ dễ hiểu hơn rất nhiều.

  • @Thanh94Long
    @Thanh94Long 3 ปีที่แล้ว

    Clip hay quá anh

  • @cuongtran-vv1hi
    @cuongtran-vv1hi ปีที่แล้ว

    cái khúc runtime bên interface thì em thấy nó bên abstract class nó cúng làm đc mà anh chẳng khác nhau gì mấy. Thay vì thằng interface thì nó implement còn abstract class thì nó extend cái đó thôi. Mong anh giải thích kỹ giúp em chỗ này để hiểu rõ hơn ạ. Bài giảng rất hay cảm ơn anh nhiều. Nếu mà khác nhau thì chỉ khác cái cấu trúc thực thi thôi ạ

  • @NguyenTruongLuan
    @NguyenTruongLuan 4 หลายเดือนก่อน

    6:40
    anh Dev ơi cho em xin hỏi
    sau java 8 hình như em thấy thằng Interface nó cũng có default methods á anh.
    thì trường hợp này nó cũng ngang với Abstract Class phải không anh.

  • @lethithienthao6489
    @lethithienthao6489 11 หลายเดือนก่อน

    cám ơn anh ạ

  • @doremon7334
    @doremon7334 3 ปีที่แล้ว

    ôi giờ may quá e cảm ơn

  • @jimmyhung958
    @jimmyhung958 ปีที่แล้ว

    Cái này ông này nên đề cập đến ngôn ngữ mà ông nhắc tới :D tôi đoán là java :)

  • @andynguyen30111
    @andynguyen30111 3 ปีที่แล้ว

    Rất hay

  • @huynhthanhliem11x13
    @huynhthanhliem11x13 2 ปีที่แล้ว

    hu wa em xem 3 lần mà lần nào cũng nhận ra mình hiểu thêm 1 tý. Không biết nên vui hay buồn

  • @AnhNguyen-2810
    @AnhNguyen-2810 3 ปีที่แล้ว

    Mong a ra nhieu video hon ve java

  • @kimchilee4355
    @kimchilee4355 3 ปีที่แล้ว

    anh làm video nói về OOp lý thuyết được không ạ? Em thấy anh giảng rất dễ hiểu và trực quan hơn nhiều so với đọc tài liệu hay thầy giảng bài a ạ

  • @huuquocdattran2877
    @huuquocdattran2877 4 ปีที่แล้ว

    Mình thấy cái chính đi phỏng vấn là khác biệt chính giữa Abstract và Interface là Interface HỖ TRỢ ĐA KẾ THỪA, còn Abstract thì không.

  • @lehoang-de5fs
    @lehoang-de5fs ปีที่แล้ว

    có thể làm âm thanh nói với âm thanh nhạc giới thiệu bằng nhau k, đang xem, làm cả hàng xóm chửi um xùm

  • @masterofbusiness7850
    @masterofbusiness7850 3 ปีที่แล้ว

    really interesting thanks:3

  • @_Nguyenan
    @_Nguyenan 2 ปีที่แล้ว

    trời ơi năm nhất vô gặp chú này múa anh
    văn mù luôn

  • @ucnhientran8512
    @ucnhientran8512 4 ปีที่แล้ว

    Làm về design pattern đi Ông dev ! thank you !!

    •  4 ปีที่แล้ว +1

      Mình đã có một số video về Design Pattern hay gặp rồi :D sau nếu có thời gian mình sẽ ra thêm.

  • @hoait106
    @hoait106 4 ปีที่แล้ว

    E có 2 điều muốn hỏi a:
    1. Ở 9:35, E vẫn chưa hiểu về "Interface chỉ chưa instant". A có thể giải thích thêm chổ này và đưa ra một ví dụ được không a.
    2. E có biết Interface dùng để truyền dữ liệu qua lại giữa các Class nhưng vẫn chưa thật sự hiểu rõ, nhờ a giải thích thêm dùm e. Cảm ơn a trước ạ

    •  4 ปีที่แล้ว +2

      1. Ở đây interface chỉ chứa CONSTANT chứ không phải là instance nha.
      2. Nó không có truyền dữ liệu qua lại giữa các class, mà nó định nghĩa là những thứ mà các class đó có. Còn mỗi class nó implement như nào là chuyện của nó nha.

  • @childrenf1924
    @childrenf1924 2 ปีที่แล้ว

    abstract class cũng sử dụng được đa hình mà anh :p

    •  2 ปีที่แล้ว +1

      E có nghe nhầm ko nhỉ :v a nhớ là a đâu có nói về đa hình ở đây ta, cái a nói là đa kế thừa mà hè, e cho lại cái phút với

    • @childrenf1924
      @childrenf1924 2 ปีที่แล้ว

      @ 9:10 phút á anh =))

    •  2 ปีที่แล้ว +1

      @@childrenf1924 má ơi :v a nói là phát huy, chứ có nói abstract class khum làm đc đâu e :v nó là caid class nó làm gì chả đc :D

    • @childrenf1924
      @childrenf1924 2 ปีที่แล้ว

      @ à tại lúc đó anh so sánh á nên em mới bị confused =)) chứ em biết nó cũng làm được mà

  • @Shibaok
    @Shibaok 3 ปีที่แล้ว

    anh đẹp trai quá

  • @hieunguyen6094
    @hieunguyen6094 4 ปีที่แล้ว

    Anh chia sẻ cách học tiếng anh của ngành này đi

    •  4 ปีที่แล้ว

      Okelah :D

  • @vanleinh491
    @vanleinh491 4 ปีที่แล้ว

    Dạ chào Ông Dev, em có thắc mắc là ở khúc 8:45, em vẫn chưa hiểu ý anh nói là khi nào dùng interface. Anh bảo là "có nhiều thứ trong hệ thống và những thứ đó có chung signature của function, chung kiểu trả về, chung parameter", em đang bị mơ hồ về câu nói này của anh. Phiền anh giúp em hiểu rõ hơn bằng ví dụ nào đó cụ thể được ko ạ. Cảm ơn anh trước ạ

    •  4 ปีที่แล้ว +1

      Ví dụ nhá: A muốn sort 1 cái list, nhưng a có nhiều kiểu sort như là QuickSort, MergeSort, HeapSort chẳng hạn.
      Thì mỗi thằng đó ddeusf có 1 hàm List sort(List input). Thì khi đấy mình có thể đưa cái function sort đó vào trong 1 cái interface gọi là SortAlgo chẳng hạn. Khi đó, trong hàm main của e có thể tạo ra 1 cái biến là SortAlgo, và gọi hàm sort bằng cái interface đó. SortAlgo nó có thể là bất kì type sort nào ở trên, và nó có thể thay đổi ở runtime nữa.

  • @VuvaToniKroos
    @VuvaToniKroos ปีที่แล้ว

    10đ nha anh

  • @loco7385
    @loco7385 3 ปีที่แล้ว

    a ơi ! cái khúc runtime bên abstract class e thấy nó cx làm đc mà a

    •  3 ปีที่แล้ว

      Uhm, anh nói đoạn này không chính xác nhưng ý a là như này:
      - Class thì nó sẽ định danh 1 cái shape, nên thường thì class sẽ extend 1 cái abstract class, chứ không làm kiểu tạo 1 cái biến abstract class bằng gì đó.
      Ví dụ class Rectangle đi, nó sẽ phải là kế thừa Shape đúng ko, chứ mình không có làm kiểu tạo 1 cái prop là Shape trong Rectangle.
      Còn interface thì nó là behaviour, nên thực ra nó có thể viết theo kiểu 1 cái prop trong class, mà không làm thay đổi cái tính đúng đắn của class đó. Và 1 biến, thì sẽ có get set để update trong runtime.
      Bên cạnh đó, em nói rất đúng nha, cái abstract class vẫn có thể init nhiều type đc trong run time, nhưng a nghĩ là e hiểu ý của a rồi đúng ko @@

    • @loco7385
      @loco7385 3 ปีที่แล้ว +1

      @. e hiểu r a ạ! a phản hồi nhanh ghê. E còn sợ đợi lâu

    • @ruanhuibai-r2c
      @ruanhuibai-r2c 2 ปีที่แล้ว

      @ anh ơi prop là gì vậy ạ

  • @vinhhoang1248
    @vinhhoang1248 4 ปีที่แล้ว

    Qua bên anh dạy không :))

    •  4 ปีที่แล้ว

      Éc @@ Em cảm ơn nhưng em sợ ko làm nổi anh à, em làm video nó ngáo ngáo quen rồi :v Để em có thêm kinh nghiệm đã, ít năm nữa mà anh còn chiếu cố thì em sẽ theo :D

  • @shyn1958
    @shyn1958 4 ปีที่แล้ว

    Hâm mộ anh, anh có thể cho em xin link facebook không ạ.

    •  4 ปีที่แล้ว

      Tks e đã ủng hộ nha :D Link fanpage ở dưới description ấy e. Còn trang cá nhân thì a ko active lắm :D

  • @the_infinity_snake
    @the_infinity_snake 9 หลายเดือนก่อน

    Đúng ra nên có code của ngôn ngữ cụ thể để minh họa, chứ nói chay thế này thì chỉ càng gây khó hiểu hơn...
    😄

  • @n2.nguyenchinghia539
    @n2.nguyenchinghia539 ปีที่แล้ว

    anh nói hay vãi, em chả hiểu gì cả

    •  ปีที่แล้ว

      Tuyệt vời

  • @HELuongMinhDat
    @HELuongMinhDat 4 ปีที่แล้ว

    ...