Abstract class và interface ???

Hế lô hế lô, Ông dev đây!
Trong video này mình sẽ giới thiệu abstract class và interface đồng thời đưa ra một số so sánh giữa 2 chủ thể này trong lập trình.
-- Để xem những video về lập trình và gaming --
Nhấn vào đây để theo dõi kênh mình nhé: tinyurl.com/SubscribeOngDev
-- Blog của mình --
blog.ongdev.com
-- Ủng hộ Ông Dev --
-- Facebook page của mình --
/ ongdevvuitinh
Cảm ơn các bạn đã quan tâm theo dõi
#ôngdev #OOP #abstractclassvàinterface

Пікірлер: 75

  • @kieuvo6386
    @kieuvo6386 Жыл бұрын

    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
    @manhhungpham12942 жыл бұрын

    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

    Жыл бұрын

    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

    Жыл бұрын

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

  • @tuyenbui9514

    @tuyenbui9514

    5 ай бұрын

    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

    2 ай бұрын

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

  • @vietdao336

    @vietdao336

    27 күн бұрын

    ​@@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
    @nguyenhoanghuy84563 жыл бұрын

    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
    @udemytiengviet9563 жыл бұрын

    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

  • @linhuchiha7440
    @linhuchiha74403 жыл бұрын

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

  • @sonhango1265
    @sonhango12652 жыл бұрын

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

  • @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

  • @manhhungkhong2667
    @manhhungkhong26672 жыл бұрын

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

  • @thuonghd3101
    @thuonghd31014 жыл бұрын

    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 ạ

  • @tienduongmr
    @tienduongmr2 жыл бұрын

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

  • @trungmaingoc8528
    @trungmaingoc85282 жыл бұрын

    ô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

  • @khamblue
    @khamblue2 жыл бұрын

    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.

  • @kimchilee4355
    @kimchilee43553 жыл бұрын

    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 ạ

  • @trieuvt5510
    @trieuvt55102 жыл бұрын

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

  • @Thanh94Long
    @Thanh94Long2 жыл бұрын

    Clip hay quá anh

  • @doremon7334
    @doremon73343 жыл бұрын

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

  • @cangxanhtom6797
    @cangxanhtom67973 жыл бұрын

    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.

  • @meoconhoccode
    @meoconhoccode2 жыл бұрын

    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-28102 жыл бұрын

    Mong a ra nhieu video hon ve java

  • @andynguyen30111
    @andynguyen301113 жыл бұрын

    Rất hay

  • @nguyenmanh8330
    @nguyenmanh83303 жыл бұрын

    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

  • @lethithienthao6489
    @lethithienthao64897 ай бұрын

    cám ơn anh ạ

  • 4 жыл бұрын

    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

  • @khatranbao6787
    @khatranbao67872 жыл бұрын

    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

  • @masterofbusiness7850
    @masterofbusiness78503 жыл бұрын

    really interesting thanks:3

  • @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 ạ

  • @huuquocdattran2877
    @huuquocdattran28773 жыл бұрын

    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.

  • @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 :)

  • @_Nguyenan
    @_Nguyenan2 жыл бұрын

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

  • @ucnhientran8512
    @ucnhientran85124 жыл бұрын

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

  • 4 жыл бұрын

    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.

  • @lehoang-de5fs
    @lehoang-de5fs10 ай бұрын

    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

  • @Shibaok
    @Shibaok3 жыл бұрын

    anh đẹp trai quá

  • @VuvaToniKroos
    @VuvaToniKroos Жыл бұрын

    10đ nha anh

  • @hoait106
    @hoait1064 жыл бұрын

    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 жыл бұрын

    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.

  • @hieunguyen6094
    @hieunguyen60944 жыл бұрын

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

  • 4 жыл бұрын

    Okelah :D

  • @atphamvan5338
    @atphamvan53383 жыл бұрын

    anh có thể nêu ra 1 ví dụ về abtracts và interface em có thể hình dung rõ hơn được k ạ. tại em khá mơ hồ khi nghe lý thuyết mặc dù nghe rất nhiều lần ạ.Và có trường hợp nào mà có thể dùng được cả abtracts và interface luôn không ạ a.

  • 3 жыл бұрын

    Ví dụ em là Student, thì em kế thừa abstract class Person, sẽ bao gồm các tính chất cơ bản của con người, những tính năng của con người. Nhưng em chơi game thì em sẽ có thêm cái interface GamePlayable thì em sẽ có viết những function của cái interface đó, ví dụ như em chơi game gì, chơi game như thế nào. Abstract thì hầu hết là định nghĩa cấu trúc, interface định nghĩa tính năng

  • @atphamvan5338

    @atphamvan5338

    3 жыл бұрын

    @ dạ a ơi tức là ở abtracts là có phương thức và thuộc tính đúng k a

  • @vinhhoang1248
    @vinhhoang12484 жыл бұрын

    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

  • @vanleinh491
    @vanleinh4914 жыл бұрын

    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 жыл бұрын

    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.

  • @shyn1958
    @shyn19584 жыл бұрын

    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

  • @childrenf1924
    @childrenf1924 Жыл бұрын

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

  • Жыл бұрын

    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

    Жыл бұрын

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

  • Жыл бұрын

    @@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

    Жыл бұрын

    @ à 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à

  • @the_infinity_snake
    @the_infinity_snake4 ай бұрын

    Đú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... 😄

  • @loco7385
    @loco73852 жыл бұрын

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

  • 2 жыл бұрын

    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

    2 жыл бұрын

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

  • @ruanhuibai-r2c

    @ruanhuibai-r2c

    Жыл бұрын

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

  • @n2.nguyenchinghia539
    @n2.nguyenchinghia539 Жыл бұрын

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

  • Жыл бұрын

    Tuyệt vời

  • @HELuongMinhDat
    @HELuongMinhDat4 жыл бұрын

    ...

Келесі