một phương thức được ghi đè ở lớp con thì theo các bài trước thì thầy hd bằng từ khoá new tenphuongthuc nhưng bây giờ lại là override tenphuongthuc thì nó có giống nhau không ạ
cho em hỏi về abstract và interface tại sao ta là cần khai báo tên phương thức mà không dùng để định nghĩa, trong khi ta có thể tự khai báo tự định nghĩa ở class mình cần sử dụng luôn ạ?
khai báo phương thức ở lớp cơ sở và triển khai phương thức đó ở lớp kế thừa. Nó giống như lớp cha đưa ra các yêu cầu mà lớp con bắt buộc phải làm theo. Trong đa hình có 2 types là đa hình tĩnh (static polymorphism) và đa hình động (dynamic polymorphism). Đa hình tĩnh thể hiện qua overload method, còn đa hình động chính là override lại phương thức đó khi kế thừa. Đây là khái niệm quan trọng cần nắm để sau này sẽ dùng đến rất nhiều trong công việc. Dependency Injection chính là sử dụng đa hình động đó bạn
mình có đọc được từ một nguồn rằng : New : Tạo một phiên bản mới cho một method không ràng buộc với phiên bản cũ ở lớp cha (hay nói cách khác nó tự ẩn cái method cũ đi) Override : Ghi đè lên thằng cũ, chú ý là thằng cũ vẫn tồn tại song song với thằng mới. Tùy vào kiểu của lớp (đối tượng) được khai báo sẽ có phương thức phù hợp được gọi.
@@thetannguyen9389 Là vẫn đúng, nhưng nó đúng với trường hợp khi bạn đang dùng cách thông thường : "LopCon _lopcon = new LopCon();" Hãy thử không dùng virtual và override, ghi đè 1 cách bình thường, nhưng lúc này tạo đối tượng kiểu: "LopCha _lopcon = new LopCon();" sẽ thấy ngay vấn đề. Rồi hãy nói đến những thứ không thể châp nhận ở đây khi chúng ta không sử dụng 2 từ khóa đó mà dùng ghi đè thông thường: - Vi phạm tính kế thừa, sự vi phạm này hệt kiểu vi phạm lương tâm thôi, không ai bắt bẻ (nhưng Compiler đôi khi sẽ có warning đấy). Không thể hiện được tính đa hình trong OOP, nếu sử dụng design pattern và yêu cầu dùng "con trỏ" của lớp Cha quản lý các lớp Con để mang tính thống thể thì sao ? - Chắc chắn sẽ chạy được nhưng có warning từ compiler,. Nhất là khi khi bạn join dự án. Đôi khi sẽ có những lỗi warning khi compile. Và yes, nó chạy được mà ? Nhưng khách hàng sẽ SAY NO đấy, nhất là với khách hàng Nhật, bạn sẽ khóc tiếng mán nếu bị họ bắt đi sửa logic từng cái để không còn warning. Warning này đẻ ra đơn giản vì nó không mang tính "hide inherritance" của lớp Cha.
anh cho em hỏi là 1 class A kế thừa 1 abstract B. rồi class A làm abstract tiếp cho class C kế thừa được không ạ. Theo video hình như không được, nhưng intterface cũng không thể làm 2 class lồng nhau vậy được. Anh có lời khuyên gì không ạ. Vì yêu cầu phải có 2 lớp lồng nhau như vậy ạ. Em cảm ơn ạ
cho em hỏi: dùng virtual/override giống như dùng new đúng không ạ? vì cả 2 đều để định nghĩa lại phương thức cha, và khi muốn dùng phương thức cha thì dùng từ khóa base.
Đưa ra 1 quy ước các phương thức mà lớp con phải làm theo. ứng dụng thì nhiều lắm: giúp code ngắn gọn, tổ chức project khoa học dễ scale về sau mà không lo ảnh hưởng đến dự án. Dependency Injection cũng là đa hình động đấy bạn
Các bạn đăng ký theo dõi ủng hô kênh nhé, cảm ơn các bạn ruclips.net/user/xuanthulab
Em fan cứng
thật sự khác biệt khi có chuyên môn về sư phạm, video tuyệt vời lắm ạ
Cảm ơn thầy, thầy dạy thật sự rất dễ hiểu ạ
ad dạy chi tiết và dễ hiểu ạ : love
chất lượng quá :D đỉnh chóp luôn
bài này rất hay ạ
Lâu quá không thấy ad ra video nào mới
4:27 overload ms là nạp chồng chứ thầy
Cảm ơn ad ạ
một phương thức được ghi đè ở lớp con thì theo các bài trước thì thầy hd bằng từ khoá new tenphuongthuc nhưng bây giờ lại là override tenphuongthuc thì nó có giống nhau không ạ
cho em hỏi về abstract và interface tại sao ta là cần khai báo tên phương thức mà không dùng để định nghĩa, trong khi ta có thể tự khai báo tự định nghĩa ở class mình cần sử dụng luôn ạ?
khai báo phương thức ở lớp cơ sở và triển khai phương thức đó ở lớp kế thừa. Nó giống như lớp cha đưa ra các yêu cầu mà lớp con bắt buộc phải làm theo. Trong đa hình có 2 types là đa hình tĩnh (static polymorphism) và đa hình động (dynamic polymorphism). Đa hình tĩnh thể hiện qua overload method, còn đa hình động chính là override lại phương thức đó khi kế thừa. Đây là khái niệm quan trọng cần nắm để sau này sẽ dùng đến rất nhiều trong công việc. Dependency Injection chính là sử dụng đa hình động đó bạn
override thì phải là ghi đè chứ sao lại là nạp chồng nhỉ?
Thầy ơi thầy có khoá nào dạy spring java bằng vscode ko ạ . Em ko cấu hình đc ạ
Em đã hiệu ạ nhưng Abs sẽ giúp gì trong dự án ạ ?
anh ơi cho em hỏi, sự khác nhau giữa new và override là gì ạ, và khi nào sử dụng 2 từ này để ghi đè 1 hàm
mình có đọc được từ một nguồn rằng :
New : Tạo một phiên bản mới cho một method không ràng buộc với phiên bản cũ ở lớp cha (hay nói cách khác nó tự ẩn cái method cũ đi)
Override : Ghi đè lên thằng cũ, chú ý là thằng cũ vẫn tồn tại song song với thằng mới. Tùy vào kiểu của lớp (đối tượng) được khai báo sẽ có phương thức phù hợp được gọi.
b xem lai bai tinh ke thua, va xem bai nay , ngam nghi mot luc la hieu luon, khoi tra nguon.
a ơi a có thể hướng dẫn về lập trình hướng đối tượng c# được ko ạ
Trong này có đầy đủ mà: ruclips.net/video/2FvmFZo9Bvw/видео.html
@@XuanThuLab à vâng tại e xem chưa hết, cảm ơn a rất nhiều
Nếu ko có từ khóa virtual, override mà vẫn ghi đè bình thường thì vẫn gọi lớp con đúng ko ad?
cùng câu hỏi, tại sao phải có virtual trong khi ko có nó mình vẫn có thể "ghi đè" được nhỉ ?
@@thetannguyen9389 Là vẫn đúng, nhưng nó đúng với trường hợp khi bạn đang dùng cách thông thường : "LopCon _lopcon = new LopCon();"
Hãy thử không dùng virtual và override, ghi đè 1 cách bình thường, nhưng lúc này tạo đối tượng kiểu: "LopCha _lopcon = new LopCon();" sẽ thấy ngay vấn đề.
Rồi hãy nói đến những thứ không thể châp nhận ở đây khi chúng ta không sử dụng 2 từ khóa đó mà dùng ghi đè thông thường:
- Vi phạm tính kế thừa, sự vi phạm này hệt kiểu vi phạm lương tâm thôi, không ai bắt bẻ (nhưng Compiler đôi khi sẽ có warning đấy). Không thể hiện được tính đa hình trong OOP, nếu sử dụng design pattern và yêu cầu dùng "con trỏ" của lớp Cha quản lý các lớp Con để mang tính thống thể thì sao ?
- Chắc chắn sẽ chạy được nhưng có warning từ compiler,. Nhất là khi khi bạn join dự án. Đôi khi sẽ có những lỗi warning khi compile. Và yes, nó chạy được mà ? Nhưng khách hàng sẽ SAY NO đấy, nhất là với khách hàng Nhật, bạn sẽ khóc tiếng mán nếu bị họ bắt đi sửa logic từng cái để không còn warning. Warning này đẻ ra đơn giản vì nó không mang tính "hide inherritance" của lớp Cha.
anh cho em hỏi là 1 class A kế thừa 1 abstract B. rồi class A làm abstract tiếp cho class C kế thừa được không ạ. Theo video hình như không được, nhưng intterface cũng không thể làm 2 class lồng nhau vậy được. Anh có lời khuyên gì không ạ. Vì yêu cầu phải có 2 lớp lồng nhau như vậy ạ.
Em cảm ơn ạ
vẫn kế thừa được như thường mà bạn
cho em hỏi: dùng virtual/override giống như dùng new đúng không ạ? vì cả 2 đều để định nghĩa lại phương thức cha, và khi muốn dùng phương thức cha thì dùng từ khóa base.
em vẫn chưa hiểu lớp abstract công dụng để làm gì khi mà nó không có tác dụng gì hết
theo như mình biết thì là không cho phép tạo đối tượng mới, chỉ là cơ sở cho phép các lớp sau kế thừa
Đưa ra 1 quy ước các phương thức mà lớp con phải làm theo. ứng dụng thì nhiều lắm: giúp code ngắn gọn, tổ chức project khoa học dễ scale về sau mà không lo ảnh hưởng đến dự án. Dependency Injection cũng là đa hình động đấy bạn
override (ghi đè)- overloading (nạp chồng) chắc anh bị nhầm ^^
Rất cám ơn anh ạ
Cảm ơn anh nhiều ạ