01/10/2018, 13:46
Có cách nào để tắt tính đa hình (Polymorphism) trong Javascript hoặc Typescript không?
(Các bạn lưu ý: đây là mình nghiên cứu, chứ không phải hỏi trong dự án thực tế)
Cho đoạn code sau:
class A {
abc() { console.log(1) }
}
class B extends A {
abc() { console.log(2) }
}
let b = new B();
b.abc(); // => in ra 2
// typescript bắt đầu từ đây
let a = <A>b;
a.abc(); // => vẫn in ra 2
Làm thế nào để a.abc() in ra 1 nhỉ.
Bài liên quan
(<A>b).abc()
in ra 2 đúng rồi mà?? Nguyên lý thứ 4 là cái gì??Nếu làm trong C# thì nó in ra 1 đấy. Cái mình muốn đạt được là Polymorphism.
Ví dụ bên C#
oh lâu ngày ko đụng tới C#, cái này đâu phải đa hình
cái này mới là đa hình trong C#:
OK mình nhầm lẫn tí, vậy trong trường hợp không có override với virtual thì làm thế nào để được như ví dụ của mình trên Typescript?
gu gồ xem làm thể nào để chặn polymorphism trong typescript thôi chứ ai biết đâu
Typescript polymorphism
đắng lòng:
đành gọi thẳng hàm của A vậy
JS dzui lắm, data 1 nơi, function 1 nẻo.
Thật ra theo implementation của C++ trong asm thì cũng data 1 nơi, function 1 nẻo
P/s: Sửa lại title cho đúng.
Không liên quan, bên java thì method là virtual by default, còn bên C# thì không như vậy.
skolima.blogspot.com
Lý do:
Why aren't C# methods virtual by default?
Recently, during GeeCON 2012 conference, I had a very interesting conversation with Martin Skurla on differences between the .NET runtime ...