![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Construction and Disposal
Số trang: 19
Loại file: pdf
Dung lượng: 132.90 KB
Lượt xem: 7
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Constructor : Cú pháp khai báo một Constructor là : chúng ta khai báo một phương thức mà cùng tên với lớp và không có kiểu trả về. public class MyClass { public MyClass() { } // rest of class definition Như trong c++ và java, bạn có thể không cần định nghĩa constructor trong lớp của bạn nếu không cần thiết. Nếu bạn không định nghĩa một constructor nào trong lớp của bạn thì trình biên dịch tạo một constructor mặc định đểkhởi tạo một số giá trị mặc định như: gán chuỗi rỗng cho chuỗi, gán 0...
Nội dung trích xuất từ tài liệu:
Construction and Disposal Construction and DisposalConstructor :Cú pháp khai báo một Constructor là : chúng ta khai báo một phương thứcmà cùng tên với lớp và không có kiểu trả về.public class MyClass{ public MyClass() { } // rest of class definitionNhư trong c++ và java, bạn có thể không cần định nghĩa constructor tronglớp của bạn nếu không cần thiết. Nếu bạn không định nghĩa một constructornào trong lớp của bạn thì trình biên dịch tạo một constructor mặc định đểkhởi tạo một số giá trị mặc định như: gán chuỗi rỗng cho chuỗi, gán 0 chokiểu số, false cho kiểu bool.Các contructor theo cùng luật overloading như các phương thức khác. Bạncũng có thể tạo nhiều constructor c ùng tên và khác tham số giống như cácphương thức nạp chồng : public MyClass() // zero-parameter constructor { // construction code } public MyClass(int number) // another overload { // construction code }Chú ý : khi bạn đã định nghĩa một constructor trong lớp của bạn thì trìnhbiên dịch sẽ không tự động tạo ra constructor mặc định.Chúng ta có thể định nghĩa các constructor với các bổ từ private và protectedđể chúng không thể được nhìn thấy trong các lớp không có quan hệ:public class MyNumber{ private int number; private MyNumber(int number) // another overload { this.number = number; }}Chú ý: Nếu bạn định nghĩa một hay nhiều constructor private thì những lớpthừa kế lớp của bạn sẽ không thể khởi tạo được. Do đó chúng ta phải cânnhắc kỹ lưỡng khi định nghĩa bổ từ của một constructor.Constructor tĩnh(static):Chúng ta định nghĩa một constructor tĩnh để khởi tạo giá trị cho các biếntĩnh.class MyClass{ static MyClass() { // initialization code } // rest of class definition}Một nguyên nhân để viết một constructor tĩnh là: Nếu lớp của bạn có một sốtrường hay thuộc tính cần được khởi tạo từ bên ngoài trước khi lớp được sửdụng lần đầu tiên.Chúng ta không thể biết chắc được khi nào một constructor tĩnh sẽ đượcthực hiện. Và chúng ta cũng không biết trước các constructor tĩnh của cáclớp khác nhau sẽ thực hiện những gì. Nhưng chúng ta có thể chắc chắn rằngconstructor tĩnh chỉ chạy một lần và nó sẽ được gọi trước khi đoạn mã củabạn tham khảo đến lớp đó. Trong C#, Constructor tĩnh thường được thựchiện ngay trước lần gọi đầu tiên của một thành viên trong lớp đó.Constructor tĩnh không có bổ từ truy cập, không có bất kỳ một tham số nàovà chỉ có duy nhất một constructor tĩnh trong một lớp.Chúng ta có thể định nghĩa một constructor tĩnh và một constructor thực thểkhông có tham số trong cùng một lớp. Nó không gây ra bất kỳ một sự xungđột nào bởi vì constructor tĩnh được thực hiện khi lớp được khởi tạo cònconstructor thực thể được thực hiện khi một thực thể được tạo ra.Gọi các constructor từ những constructor khác:Xét ví dụ như sau:class Car{ private string description; private uint nWheels; public Car(string model, uint nWheels) { this.description = description; this.nWheels = nWheels; } public Car(string model) { this.description = description; this.nWheels = 4; }// etc.Ta thấy cả hai constructor đều khởi tạo cùng các trường, và nó sẽ ngắn gọnhơn nếu ta chỉ cần viết đoạn mã ở một constructor. C# cho phép ta làm đềuđó như sau:class Car{ private string description; private uint nWheels; public Car(string model, uint nWheels) { this.description = description; this.nWheels = nWheels; } public Car(string model) : this(model, 4) { } // etcKhi ta khởi tạo một biến như sau:Car myCar = new Car(Proton Persona);Thì constructor 2 tham số sẽ được thực thi trước bất kỳ đoạn mã nào trongconstructor 1 biến.Constructor của các lớp thừa hưởng:Khi chúng ta tạo ra một thể hiện của một lớp thừa hưởng thì không phải chỉnhững constructor của lớp thừa hưởng đó được thực hiện mà cả nhữngconstructor của lớp cơ sở cũng được gọi. Và các constructor của lớp cơ sở sẽđược thực hiện trước khi các constructor của lớp thừa hưởng.Chúng ta xét ví dụ sau:abstract class GenericCustomer{ private string name; // lots of other methods etc.}class Nevermore60Customer : GenericCustomer{ private uint highCostMinutesUsed; // other methods etc.}Đều chúng ta cần ở ví dụ trên là khi một thể hiện của lớpNevermore60Customer được tạo ra thì thuộc tính name phải được khởi tạogiá trị null và thuộc tính highCostMinutesUsed được khởi tạo là 0.GenericCustomer arabel = new Nevermore60Customer();Đối với thuộc tính highCostMinutesUsed thì không có vấn đề gì, nó sẽ đượcconstructor mặc định khởi tạo giá trị 0. Còn thuộc tính name thì sao? Lớpcon không thể truy cập vào thuộc tính này bởi vì nó được khai báo private.Nhưng trên thực tế thì thuộc tính này luôn được khởi tạo giá trị null vì khinày constructor của lớp cơ sở cũng được gọi và nó thực hiện trước khởi tạogiá trị null cho thuộc tính name.Thêm một constructor không tham số trong một quan hệ thừa kế:Chúng ta sẽ xem xét chuyện gì sẽ xảy ra nếu ta thay thế constructor mặcđịnh bằng một constructor khác không có tham số. Xét ví dụ ở trên, bây giờta muốn khởi tạo name bằng giá trị ta làm như sau:public abstract class GenericCustomer { private string name; public GenericCustomer() : base() // chúng ta có thể xoá bỏ dòng này mà không có ảnh hưởng gìkhi biên dịch { name = ; }Điểm chú ý ở đây là chúng ta thêm lời gọi tường minh đến constructor củalớp cơ sở trước khi constructor của lớp GenericCustomer được thực hiện vàchúng ta sử dụng từ khoá base để gọi các constructor ở lớp cơ sở.Trên thực tế chúng ta có thể viết như sau: public GenericCustomer() { name = ; }Nếu trình biên dịch không thấy bất kỳ một sự tham khảo nào ...
Nội dung trích xuất từ tài liệu:
Construction and Disposal Construction and DisposalConstructor :Cú pháp khai báo một Constructor là : chúng ta khai báo một phương thứcmà cùng tên với lớp và không có kiểu trả về.public class MyClass{ public MyClass() { } // rest of class definitionNhư trong c++ và java, bạn có thể không cần định nghĩa constructor tronglớp của bạn nếu không cần thiết. Nếu bạn không định nghĩa một constructornào trong lớp của bạn thì trình biên dịch tạo một constructor mặc định đểkhởi tạo một số giá trị mặc định như: gán chuỗi rỗng cho chuỗi, gán 0 chokiểu số, false cho kiểu bool.Các contructor theo cùng luật overloading như các phương thức khác. Bạncũng có thể tạo nhiều constructor c ùng tên và khác tham số giống như cácphương thức nạp chồng : public MyClass() // zero-parameter constructor { // construction code } public MyClass(int number) // another overload { // construction code }Chú ý : khi bạn đã định nghĩa một constructor trong lớp của bạn thì trìnhbiên dịch sẽ không tự động tạo ra constructor mặc định.Chúng ta có thể định nghĩa các constructor với các bổ từ private và protectedđể chúng không thể được nhìn thấy trong các lớp không có quan hệ:public class MyNumber{ private int number; private MyNumber(int number) // another overload { this.number = number; }}Chú ý: Nếu bạn định nghĩa một hay nhiều constructor private thì những lớpthừa kế lớp của bạn sẽ không thể khởi tạo được. Do đó chúng ta phải cânnhắc kỹ lưỡng khi định nghĩa bổ từ của một constructor.Constructor tĩnh(static):Chúng ta định nghĩa một constructor tĩnh để khởi tạo giá trị cho các biếntĩnh.class MyClass{ static MyClass() { // initialization code } // rest of class definition}Một nguyên nhân để viết một constructor tĩnh là: Nếu lớp của bạn có một sốtrường hay thuộc tính cần được khởi tạo từ bên ngoài trước khi lớp được sửdụng lần đầu tiên.Chúng ta không thể biết chắc được khi nào một constructor tĩnh sẽ đượcthực hiện. Và chúng ta cũng không biết trước các constructor tĩnh của cáclớp khác nhau sẽ thực hiện những gì. Nhưng chúng ta có thể chắc chắn rằngconstructor tĩnh chỉ chạy một lần và nó sẽ được gọi trước khi đoạn mã củabạn tham khảo đến lớp đó. Trong C#, Constructor tĩnh thường được thựchiện ngay trước lần gọi đầu tiên của một thành viên trong lớp đó.Constructor tĩnh không có bổ từ truy cập, không có bất kỳ một tham số nàovà chỉ có duy nhất một constructor tĩnh trong một lớp.Chúng ta có thể định nghĩa một constructor tĩnh và một constructor thực thểkhông có tham số trong cùng một lớp. Nó không gây ra bất kỳ một sự xungđột nào bởi vì constructor tĩnh được thực hiện khi lớp được khởi tạo cònconstructor thực thể được thực hiện khi một thực thể được tạo ra.Gọi các constructor từ những constructor khác:Xét ví dụ như sau:class Car{ private string description; private uint nWheels; public Car(string model, uint nWheels) { this.description = description; this.nWheels = nWheels; } public Car(string model) { this.description = description; this.nWheels = 4; }// etc.Ta thấy cả hai constructor đều khởi tạo cùng các trường, và nó sẽ ngắn gọnhơn nếu ta chỉ cần viết đoạn mã ở một constructor. C# cho phép ta làm đềuđó như sau:class Car{ private string description; private uint nWheels; public Car(string model, uint nWheels) { this.description = description; this.nWheels = nWheels; } public Car(string model) : this(model, 4) { } // etcKhi ta khởi tạo một biến như sau:Car myCar = new Car(Proton Persona);Thì constructor 2 tham số sẽ được thực thi trước bất kỳ đoạn mã nào trongconstructor 1 biến.Constructor của các lớp thừa hưởng:Khi chúng ta tạo ra một thể hiện của một lớp thừa hưởng thì không phải chỉnhững constructor của lớp thừa hưởng đó được thực hiện mà cả nhữngconstructor của lớp cơ sở cũng được gọi. Và các constructor của lớp cơ sở sẽđược thực hiện trước khi các constructor của lớp thừa hưởng.Chúng ta xét ví dụ sau:abstract class GenericCustomer{ private string name; // lots of other methods etc.}class Nevermore60Customer : GenericCustomer{ private uint highCostMinutesUsed; // other methods etc.}Đều chúng ta cần ở ví dụ trên là khi một thể hiện của lớpNevermore60Customer được tạo ra thì thuộc tính name phải được khởi tạogiá trị null và thuộc tính highCostMinutesUsed được khởi tạo là 0.GenericCustomer arabel = new Nevermore60Customer();Đối với thuộc tính highCostMinutesUsed thì không có vấn đề gì, nó sẽ đượcconstructor mặc định khởi tạo giá trị 0. Còn thuộc tính name thì sao? Lớpcon không thể truy cập vào thuộc tính này bởi vì nó được khai báo private.Nhưng trên thực tế thì thuộc tính này luôn được khởi tạo giá trị null vì khinày constructor của lớp cơ sở cũng được gọi và nó thực hiện trước khởi tạogiá trị null cho thuộc tính name.Thêm một constructor không tham số trong một quan hệ thừa kế:Chúng ta sẽ xem xét chuyện gì sẽ xảy ra nếu ta thay thế constructor mặcđịnh bằng một constructor khác không có tham số. Xét ví dụ ở trên, bây giờta muốn khởi tạo name bằng giá trị ta làm như sau:public abstract class GenericCustomer { private string name; public GenericCustomer() : base() // chúng ta có thể xoá bỏ dòng này mà không có ảnh hưởng gìkhi biên dịch { name = ; }Điểm chú ý ở đây là chúng ta thêm lời gọi tường minh đến constructor củalớp cơ sở trước khi constructor của lớp GenericCustomer được thực hiện vàchúng ta sử dụng từ khoá base để gọi các constructor ở lớp cơ sở.Trên thực tế chúng ta có thể viết như sau: public GenericCustomer() { name = ; }Nếu trình biên dịch không thấy bất kỳ một sự tham khảo nào ...
Tìm kiếm theo từ khóa liên quan:
lập trình tài liệu lập trình kỹ thuật lập trình giáo trình C ngôn ngữ lập trình C tự học lập trình với CTài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 283 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 225 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 208 0 0 -
101 trang 205 1 0
-
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 179 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 156 0 0 -
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 152 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 137 0 0 -
161 trang 134 1 0
-
Giáo trình Vi điều khiển PIC: Phần 1
119 trang 127 0 0