01/10/2018, 08:49
Thuộc tính trong abstract class c#
như tiêu đề em muốn hỏi khi 1 thuộc tính trong abstract class em dùng ví dụ như
public double ThuocTinh{get;set;}
thì có hoàn toàn sai không ạ
Thầy của em phủ nhận hoàn toàn cách khai báo này cho rằng (ngu ngốc)
phải là:
protected double ThuocTinh{get;set;}
Bài liên quan
Sao không hỏi luôn ông ấy là tại sao ?
thầy chỉ sai r thầy chửi thôi chưa lần nào giải thích cho sinh viên nghe dùng để làm gì như thầy chỉ làm cho sinh viên chép thôi :’(
Thế thầy lởm rồi :))
Quả thật tui chưa thấy quy định nào và tất cả các mã nguồn tôi xem có protected cả.
hôm nay em thực sự khó hiểu phần không biết mình đúng hay sai trong khi code vẫn chạy phần thì những câu nói của thầy có tính xúc phạm sinh viên
Thầy dởm rồi, chẳng có quy định nào về access modifier cả, có chăng chỉ là khuyến khích nên dùng theo 1 mẫu nào đó, ngoài ra việc dùng access modifier nào là tùy thuộc vào thiết kế chứ áp dụng máy móc thế thì sao ra được chương trình
Bây giờ nhé :
Cậu viết 1 class A có protected property và 1 class B kế thừa A
Cậu khởi tạo đối tượng B xem nó có thuộc tính MyProperty không ?
em hiểu rồi cảm ơn anh nhiều nhé
Chửi mà không dạy thì tào thật. Em khổ rồi ráng luyện vài khóa opp đi mai mốt đỡ khổ, tức ổng ra mặt thì có bị đì chứ có cho ổng bỏ dạy được đâu. Anh mà còn lải nhải hong chừng ổng bay vô đây chửi anh nữa à.
Hi Hoàng Long.
Có vấn đề gì nhỉ sao mình không hiểu gì hết vậy ?
em cảm ơn bác thiệc là oop em tự học và hiểu hết rồi nhưng những khi em có thắc mắc nhỏ em hỏi thầy thì thầy cứ xua tay như kiểu làm sao cũng được
chuyện em học một thầy dạy oop bắt em khai báo thuộc tính ở abstract class kiểu protected và không cho em dùng public 1 project nhỏ là tính điểm thi thí sinh gồm các thuộc tính tên, số báo danh , điểm từng môn
Mình muốn hỏi là tại sao. bạn nói là hiểu rồi thì thiểu cái gì chứ ? Mình vẫn không hiểu lám.
@Duong_Act (xin lỗi vì tag tên) Vào khai sáng với @_@!
à mình hiểu là dùng protected thì biến đó chỉ cha con dùng dược ví dụ cái MyProperty không thể gọi được ở class khác còn public thì chỗ nào cũng gọi được rất tiện nhưng mình thắc mắc là tại sao thầy mình chỉ bắt dùng protected thôi
public abstract class A{
protected int MyProperty{get;set;}
}
public class B:A{
}
Theo mình cái này còn tùy vào thiết kế nữa.
Trong C# get set là thay thế cho việc viết hàm Geter và Seter…
Nếu bạn không muốn tạo get set nữa thì khai báo luôn nó là biến đi để get set làm gì nữa. Chỉ trong các trường hợp mà lớp con phải thay đổi giá trị biến qua các hàm mà lớp cha cấp thì mới cần get set.
Trước giờ mình toàn viết mấy thứ vớ vẩn nên chủ yếu là khai báo public. Có 1 lần phải dùng {get;set;} là lúc dùng ListView bên WPF, phải dùng get set thì bên XAML nó mới nhận diện được để fill dữ liệu
Hi Trần Hoàn
Việc để mọi thứ public là một thói quen xấu. Giống như việc bạn để máy tính cho mọi người ai dùng cũng được.
<<>pu> <<>TAB> thì nhanh hơn :)) Không phải là mình không biết mà là không cần phải cứng nhắc nếu như mình không định publish nó.
nhưng vấn đề đó là lớp abstract mà bạn .Lớp đó ko khởi tạo được đối tượng mà nên khai báo như vậy thì chỉ có các lớp kế thừa mới dùng được mà
Khi dùng protected thì chỉ tại lớp chứa nó và lớp kế thừa mới truy xuất được. Còn public thì ngoài lớp kế thừa cũng truy xuất được.
Như vậy thì dùng protected hay public là do ý đồ của người thiết kế đối tượng quy định. Như ví dụ mình đã nêu, nếu giờ lớp đối tượng B,C,D,…kế thừa A và cũng có MyProperty thì phải khởi tạo lại MyProperty ở tất cả các lớp kế thừa A. Đó là 1 việc rất là “rảnh háng” và việc kế thừa A không mang lại cái ý nghĩa gì cả.
Đúng nếu code chỉ có mình bạn dùng.