1: Tính đa hình thể hiện ở việc nạp chồng phương thức và ghi đè phương thức. Nạp chồng phương thức: Ở cùng 1 class thì 1 phương thức có thể cùng tên nhưng khác tham số và khác kết quả trả về, cũng có thể hiểu là nhiều phương thức có cùng 1 tên. Ghi đè phương thức: Ở class cha định nghĩa một phương thức theo 1 cách, ở lớp con kế thừa lại lớp cha cũng mang phương thức đó nhưng ta có thể định nghĩa lại phương thức theo một cách khác, khi in kết quả ra màn hình thì sẽ in phương thức của lớp con. Ví dụ trong thực tế: Nạp chồng: Con mèo có thể kêu gừ gừ, hoặc kêu meo meo. Con chó có thể kêu gâu gâu hay ử ử... Ghi đè: Lớp nam và lớp nữ đều được kế thừa từ lớp con người, đối tượng con người có phương thức lao động bằng tay, đối tượng nam triển khai lại phương thức lao động đó bằng săn bắn, đối tượng nữ triển khai lại phương thức lao động đó bằng trồng trọt. 2. Tính kế thừa được thể hiện ở từ khóa extends, lớp con mang toàn bộ phương thức và thuộc tính của lớp cha. 3. Tính đóng gói: được thể hiện qua các từ khóa access modifier đặt ở trước thuộc tính, thứ tự về phạm vi truy cập như sau: public: các class khác có thể truy cập được các thuộc tính/hàm đó. protected: class khác folder nhưng được thừa kế thì mới truy cập được, còn nếu không thừa kế thì không truy cập được. default: 2 class mà đặt khác folder sẽ không truy cập nhau được. private: class khác không truy cập được. 4. Tính trừu tượng: được thể hiện qua interface, interface thì không phải là lớp, nó không có thuộc tính và phương thức chỉ có tên chứ không có thân, bình thường tính kế thừa là lớp con kế thừa các đặc tính và phương thức của lớp cha, nhưng tính trừu tượng là khi mà các đối tượng của lớp có thể thực hiện được các phương thức của một interface nào đó mà không cần kế thừa thuộc tính, nhưng interface sẽ chỉ định nghĩa phương thức qua tên, còn đối tượng nào muốn thực hiện phương thức của interface đó thì phải “xin phép” interface đó và viết lại chính hàm đó theo cách riêng biệt... Nhìn chung OOP chủ yếu xoay quanh đối tượng và lớp, việc thao tác cũng sẽ xoay quanh chủ yếu giữa 2 khái niệm này.
Về tính trừu tượng bạn mô tả thì vẫn chưa đủ nhé Nếu nói về tính trừu tượng thì còn có cả abstract class, sẽ xem những method nào là dùng chung cho các con, và mỗi con sẽ thực hiện riêng biệt ở các class con, tuy là chung về hành động, nhưng kết quả có thể khác. Còn về interface nó vẫn là class/lớp, nhưng đặc biệt là nó chỉ dùng để trừu tượng các hành động mà các class khác tuy khác về class cha, như là class Pet, thì có dog, cat, còn Person thì có Student hoặc Employee, nhưng có thể chung về hành động là run(), ngoài ra việc trừu tượng, có thể giúp cho việc đưa vào Array cùng kiểu/khuôn/class. Còn vì sao interface cũng là class, thì bạn thử tìm hiểu về Anonymous Class, và kĩ thuật lambda nhé
@@khanhminh2445 em đồng ý với anh về các phần kia....nhưng về phần Interface là class thì em thấy hơi không hiểu lắm ...theo em biết Thì Anonymous Class ( là một class được khai báo mà không có tên cụ thể) thì kiểu nó dùng để triển khai 1 abstract class hay 1 interface 1 cách nhanh chóng và chỉ dùng 1 lần.....nó khác với việc Interface cũng là 1 class mà anh nói. Nên anh có thể giải thích rõ hơn không ạ
Uầy tại sao lại có một người giảng dễ hiểu như này nhỉ, kênh này mình thấy cách dẫn chuyện cuốn lắm ấy, rất phù hợp với những người trẻ như mình luôn. Cảm ơn bạn vì những chia sẻ bổ ích, và cực dễ hiểu này ạ.
tui là artist, hc c# vì thích làm game, trong quá trình hc cũng tìm hiểu 1 số ngôn ngữ khác xem sao, vô tình coi clip này thấy giống oop bên c# quá, coi dễ hiểu thật
Anh ơi, em có một góp ý là danh sách phát anh nên để bài học theo thứ tự hoặc có thể thêm vào "bài 1,..." hoặc chí ít là số thứ tự để mọi người có thể dễ dàng theo dõi tiến độ học ạ!! ^^
Cảm ơn bạn ủng hộ nha. Hiện giờ mình chưa có playlist về hướng dẫn lập trình, nhưng trong thời gian tới mình sẽ ra mắt playlist hướng dẫn từ a-z. Mong bạn tiếp tục ủng hộ 🤝
Tính trừu tượng nó quá trừu tượng, mình nghe bạn nói xong cũng là 1 phần nhỏ, sao lại dùng interface làm kiểu cho biến thay vì abstract class . Đọc thấy ai cũng bảo dễ hiểu, mỗi mình chưa hiểu
anh có thể cho em hỏi là ở đoạn cuối anh có khai báo DongVat cunConDongVat = new Cun(); tại sao không phải là CunCon cunCon = new CunCon và việc này có tác dụng gì? em cảm ơn ạ
Để mình giải thích cho dễ hiểu là giả sử bạn muốn lưu trữ nhiều con mèo hoặc nhiều con chó, khi đó bạn sẽ tạo ra 1 mảng về chó để lưu trữ chó hoặc mèo để lưu trữ mèo, làm z cx được nhưng rất khó để kiểm soát thay vì vậy ta sẽ tạo ra một mảng động vật để lưu trữ chó và mèo đó là lý do vì sao ta ko khai bao cun cunCon = new cun(); mà ta khai báo dongVat cunCon = new cun(); luôn cho dễ
nếu bảo nó khó thì không khó nhưng nếu bảo nó dễ thì éo phải biết là 1 chuyển và áp dụng tất cả các tính chất của nó cho thực tế được sử dụng như nào đó là câu chuyện là là nan giải vì 10 năm kinh nghiêm cũng khá là bó tay
Lập trình OOP không phải quá khó mà vì nó bị lạm dụng quá nhiều làm chương trình ngày càng phức tạp. Chưa kể không phải như Toán được chứng minh là đúng thì trong lập trình OOP có nhiều lý thuyết suông, mơ hồ, không chứng minh được tính hiệu quả.
1: Tính đa hình thể hiện ở việc nạp chồng phương thức và ghi đè phương thức.
Nạp chồng phương thức: Ở cùng 1 class thì 1 phương thức có thể cùng tên nhưng khác tham số và khác kết quả trả về, cũng có thể hiểu là nhiều phương thức có cùng 1 tên.
Ghi đè phương thức: Ở class cha định nghĩa một phương thức theo 1 cách, ở lớp con kế thừa lại lớp cha cũng mang phương thức đó nhưng ta có thể định nghĩa lại phương thức theo một cách khác, khi in kết quả ra màn hình thì sẽ in phương thức của lớp con.
Ví dụ trong thực tế:
Nạp chồng: Con mèo có thể kêu gừ gừ, hoặc kêu meo meo. Con chó có thể kêu gâu gâu hay ử ử...
Ghi đè: Lớp nam và lớp nữ đều được kế thừa từ lớp con người, đối tượng con người có phương thức lao động bằng tay, đối tượng nam triển khai lại phương thức lao động đó bằng săn bắn, đối tượng nữ triển khai lại phương thức lao động đó bằng trồng trọt.
2. Tính kế thừa được thể hiện ở từ khóa extends, lớp con mang toàn bộ phương thức và thuộc tính của lớp cha.
3. Tính đóng gói: được thể hiện qua các từ khóa access modifier đặt ở trước thuộc tính, thứ tự về phạm vi truy cập như sau:
public: các class khác có thể truy cập được các thuộc tính/hàm đó.
protected: class khác folder nhưng được thừa kế thì mới truy cập được, còn nếu không thừa kế thì không truy cập được.
default: 2 class mà đặt khác folder sẽ không truy cập nhau được.
private: class khác không truy cập được.
4. Tính trừu tượng: được thể hiện qua interface, interface thì không phải là lớp, nó không có thuộc tính và phương thức chỉ có tên chứ không có thân, bình thường tính kế thừa là lớp con kế thừa các đặc tính và phương thức của lớp cha, nhưng tính trừu tượng là khi mà các đối tượng của lớp có thể thực hiện được các phương thức của một interface nào đó mà không cần kế thừa thuộc tính, nhưng interface sẽ chỉ định nghĩa phương thức qua tên, còn đối tượng nào muốn thực hiện phương thức của interface đó thì phải “xin phép” interface đó và viết lại chính hàm đó theo cách riêng biệt...
Nhìn chung OOP chủ yếu xoay quanh đối tượng và lớp, việc thao tác cũng sẽ xoay quanh chủ yếu giữa 2 khái niệm này.
Về tính trừu tượng bạn mô tả thì vẫn chưa đủ nhé
Nếu nói về tính trừu tượng thì còn có cả abstract class, sẽ xem những method nào là dùng chung cho các con, và mỗi con sẽ thực hiện riêng biệt ở các class con, tuy là chung về hành động, nhưng kết quả có thể khác.
Còn về interface nó vẫn là class/lớp, nhưng đặc biệt là nó chỉ dùng để trừu tượng các hành động mà các class khác tuy khác về class cha, như là class Pet, thì có dog, cat, còn Person thì có Student hoặc Employee, nhưng có thể chung về hành động là run(), ngoài ra việc trừu tượng, có thể giúp cho việc đưa vào Array cùng kiểu/khuôn/class.
Còn vì sao interface cũng là class, thì bạn thử tìm hiểu về Anonymous Class, và kĩ thuật lambda nhé
@@khanhminh2445 em đồng ý với anh về các phần kia....nhưng về phần Interface là class thì em thấy hơi không hiểu lắm ...theo em biết Thì Anonymous Class ( là một class được khai báo mà không có tên cụ thể) thì kiểu nó dùng để triển khai 1 abstract class hay 1 interface 1 cách nhanh chóng và chỉ dùng 1 lần.....nó khác với việc Interface cũng là 1 class mà anh nói. Nên anh có thể giải thích rõ hơn không ạ
Uầy tại sao lại có một người giảng dễ hiểu như này nhỉ, kênh này mình thấy cách dẫn chuyện cuốn lắm ấy, rất phù hợp với những người trẻ như mình luôn. Cảm ơn bạn vì những chia sẻ bổ ích, và cực dễ hiểu này ạ.
học cả năm không hiểu vào xem 8 phút hiểu luôn ảo thật sự các bro ạ
đọc sách cũng có đó bạn
@@lapnghiepshopee bạn cho mình xin tên đầu sách để tham khảo với ạ, mình cũng sắp học java oop
@@lapnghiepshopeebạn cho mình xin tên sách với ạ
quá đỉnh, e tìm hiểu rất nhiều OOP nhưng chả hiểu hết được cho tới khi xem video 8p của a, vinh danh a`!`
sịn sò, tìm hiểu thềm abstract so vs interface nữa
tui là artist, hc c# vì thích làm game, trong quá trình hc cũng tìm hiểu 1 số ngôn ngữ khác xem sao, vô tình coi clip này thấy giống oop bên c# quá, coi dễ hiểu thật
1 kênh hay để học và ôn tập kiến thức, mong bạn làm thêm các nội dung về RabbitMQ, Redis, Microservice, PostgreSQL và đặc biệt là Tiếng Anh 😻😻
quá hay, video ngắn, đi vào trọng tamm6, ví dụ gần gũi, rất dễ cho người xem mường tượng ra, quá hay
Rất hay và dễ hiểu ạ
2 buổi học trên lớp bằng đúng gần 9p trong video này. Howwwwww
Uây e thấy học mượt đíc vãi
Em cũng mới bắt đầu học Java, may mắn tìm được kênh của ad. Rất hay và dễ hiểu, hy vọng ad sẽ ra thêm nhiều clip hơn nữa.
Cảm ơn bạn ủng hộ nha ❤️
cảm ơn bạn, video vừa dễ hiểu lại vừa dễ thương :)))))
giọng hay dễ hiểu quá ạ
hay quá anh ạ anh hướng dẫn tận gốc vấn đề luôn
Cảm ơn bạn ủng hộ nha ❤️
quá hay anh ơi @@ thật sự dễ hiểu @@
Uây, bổ X thật sự. Em xem phát não thông luôn
lmao, đúng thứ tôi cần, rất nhanh và ổn
Cảm ơn vì những kiến thức bạn chia sẻ. Rất hữu ích
Cảm ơn bạn ủng hộ nha ❤️
học bao năm, chỉ trong 8p đã hiểu, like mạnh
Cảm ơn bạn ủng hộ ạ ❤️
Video rất dễ hiểu. Đúng thứ em đang cần.
Chúc kênh của bạn ngày càng phát triển! Content của anh đã giúp em qua môn lập trình hướng đối tượng ạ. em biết ơn nhiều lắmmm.
hay qá anh ơi, mấy video dạy khác hơi làm cho OOP nó hơi bị cứng về kỹ thuật qá, video anh làm nó làm vui với dễ hiểu lắm ạ
cảm ơn anh đã chia sẻ kiến thức, video rất dễ hiểu
Dễ hiểu lắm ạ, cảm ơn anh
Rất hay.mong anh có những buổi livestream chữa những bài lập trình hdt để e và mn dễ tương tác hơn ạ
Cảm ơn bạn ủng hộ và góp ý nha ❤️. Mình sẽ cố gắng sắp xếp thời gian làm livestream để tương tác với các bạn 😊
Nghe 1 lần hiểu luôn
Clip rất hay và dễ hiểu cảm ơn ad
Mình cảm ơn bạn ủng hộ ❤️
Làm về super() trong Java đi bạn
hay quá ạ rất dễ hiểu , đúng vid tổng quát về oop mà e đg tìm
Cảm ơn bạn ủng hộ nha ❤️
tự nhiên tìm đc cái kênh hay thực sự ủng hộ bạn ra nhiều clip hơn nha, giảng dễ hiểu 10 điểm 🙌
Cảm ơn bạn ủng hộ nha ❤️
Rất hay bạn ơi rất dễ hiểu ❤
Cảm ơn bạn ủng hộ ❤️
Cảm ơn a, video rất dễ hiểu ạ
hay dễ hiễu , cảm ơn ad
thanks broo🙏tui xem ca chuc vid tu anh qua viet nhung ko clip nao tom tat dc nhu nay:))
Cảm ơn bạn ủng hộ nha ❤️
damn khai sáng nhân sinh luôn ý 🤧🤧
Làm thêm nhiều vd mới đi a
Video hay quá, cảm ơn anh rất nhiều
Anh ơi, em có một góp ý là danh sách phát anh nên để bài học theo thứ tự hoặc có thể thêm vào "bài 1,..." hoặc chí ít là số thứ tự để mọi người có thể dễ dàng theo dõi tiến độ học ạ!! ^^
Anh dạy lập trình hướng đối tượng C# thử đi anh
ngắn gọn dễ hiểu nhưng chỉ là mì ăn liền
Một kênh hay như này mà giờ mới biết đến.
Hihi cảm ơn bạn ủng hộ nha ❤️
giảng quá hay, bạn nên làm giảng viên
Cảm ơn bạn ủng hộ ạ ❤️
đỉnh quá a +1 sub
Chúc kênh của bạn ngày càng phát triển! Content hay lắm, lâu lâu có anh da đen "OK" làm mình lại cười =)))
🤣🤣 cảm ơn bạn ❤️
Quá đỉnh anh ơi
Cảm ơn bạn ủng hộ nha ❤️
hay quá , cảm ơn bạn nhé
😜
Cảm ơn bạn ủng hộ nha ❤️
good
Bạn có thể nào ra 1 video full về OOP java kh ạ
Cảm ơn bạn ủng hộ. Mình sẽ nghiên cứu để làm một video tổng hợp về OOP 🤝
Đỉnh anh ơi 🥰🥰
Cảm ơn bạn ủng hộ nha ❤️
sao mình không tìm được playlist về hướng dẫn lập trình java trên kênh vậy ạ, hay kênh chủ yếu làm về các vấn đề rời rạc với java ạ?
Cảm ơn bạn ủng hộ nha. Hiện giờ mình chưa có playlist về hướng dẫn lập trình, nhưng trong thời gian tới mình sẽ ra mắt playlist hướng dẫn từ a-z. Mong bạn tiếp tục ủng hộ 🤝
ra nhiều hơn 1 ngày 100 clip đi ad
Hihi cảm ơn bạn ủng hộ nha. Mình sẽ cố gắng 🙌
@@CodeThu mình thấy ví dụ và bạn edit video rất hay và dễ hiểu mong bạn sẽ ra video nhiều hơn .
@@khiemnguyen5181 mình sẽ cố gắn làm tốt hơn nữa. Cảm ơn bạn cho mình feedback nha 😁
🎉
Cảm ơn bạn ủng hộ ❤️
Ad cho e hỏi làm tnao để hiện cái 1 usage 2 usage thế ạ
Hay vaixxxx
Cảm ơn bạn ủng hộ nha ❤️
Tính trừu tượng nó quá trừu tượng, mình nghe bạn nói xong cũng là 1 phần nhỏ, sao lại dùng interface làm kiểu cho biến thay vì abstract class . Đọc thấy ai cũng bảo dễ hiểu, mỗi mình chưa hiểu
cái này người nào chưa hiểu nghe còn lú hơn, mà hiểu rồi thì xem thấy chán vì khó ko khó, dễ ko dễ. chẳng nhắm tới ai
anh có thể cho em hỏi là ở đoạn cuối anh có khai báo DongVat cunConDongVat = new Cun(); tại sao không phải là CunCon cunCon = new CunCon và việc này có tác dụng gì? em cảm ơn ạ
Vì DongVat là class cha của Cun nên bạn có thể gọi đối tượng của lớp con thông qua class cha nhé
Để mình giải thích cho dễ hiểu là giả sử bạn muốn lưu trữ nhiều con mèo hoặc nhiều con chó, khi đó bạn sẽ tạo ra 1 mảng về chó để lưu trữ chó hoặc mèo để lưu trữ mèo, làm z cx được nhưng rất khó để kiểm soát thay vì vậy ta sẽ tạo ra một mảng động vật để lưu trữ chó và mèo đó là lý do vì sao ta ko khai bao cun cunCon = new cun(); mà ta khai báo dongVat cunCon = new cun(); luôn cho dễ
Code chỗ mèo con - tiếng người mình cop y bạn đem vào eclipse làm mà bị lỗi
nếu bảo nó khó thì không khó nhưng nếu bảo nó dễ thì éo phải biết là 1 chuyển và áp dụng tất cả các tính chất của nó cho thực tế được sử dụng như nào đó là câu chuyện là là nan giải vì 10 năm kinh nghiêm cũng khá là bó tay
Coi xong lú cmnl =))))))))
làm sao anh có thể viết System.out.println("meo meo"); nhanh vậy ạ
Chào bạn, trong intelliJ bạn có thể ghi “sout” + tab là nó ra System.out.println() luôn 😁
Mình cảm ơn bạn ủng hộ nha ❤️
@@CodeThu anh có thể làm 1 video hướng dẫn code nhanh hơn được không ạ, e thấy cũng rất cần thiết
@@EdwinMartinez001 cảm ơn góp ý của bạn. Ý kiến rất hay luôn bạn, mình sẽ nghiên cứu làm về đề tài này.
99.99% tutoriral chỉ cách implement chứ không nói rõ bản chất của đa hình, chỉ hiểu được bề nổi chứ tinh tinh túy thì chưa
Lập trình OOP không phải quá khó mà vì nó bị lạm dụng quá nhiều làm chương trình ngày càng phức tạp. Chưa kể không phải như Toán được chứng minh là đúng thì trong lập trình OOP có nhiều lý thuyết suông, mơ hồ, không chứng minh được tính hiệu quả.
Bạn vẫn đang dùng nó chỉ là bạn ko biết mình đang dùng nó ở đâu thôi -)))
kiến thức rất hay nhưng giọng nghe ấy quá =))
Hihi cảm ơn bạn ủng hộ nha ❤️
chưa rõ ràng lắm, sẽ khiến các newbie khó hiểu nếu vào thực tế, còn ai đã từng học rồi sẽ hiểu đc hơn.
meo meo
buồn ngủ quá bạn ơi]
free fire🎉
vẫn kh hiểu :)))))))
Thật:))
mình thấy oop không quá khó nếu đọc lý thuyết và áp dụng luôn SOLID, vì 4 concepts chính của oop để nằm trong solid
Bạn nhận xét rất chính xác. Cảm ơn bạn ủng hộ nha ❤️