1
CHƯƠNG 3
2
Mục tiêu
Khai báo được lớp, đối tượng và sử dụng.
Biết cách vận dụng các từ khoá truy cập.
Xây dựng các phương thiết lập, sao chép.
Hàm hủy bỏ,cơ chế thu gom rác
Sử dụng các thành viên tĩnh.
Nạp chồng phương thức.
3
Nội dung
Định nghĩa lớp
Khai báo đối tượng và sử dụng
Phương thức thiết lập, sao chép
Phương thức hủy
Nạp chồng phương thức
Thành phần tĩnh
Nạp chồng toán tử
4
3.1. Định nghĩa lớp
[phạm vi truy nhập:]: Là khả năng truy nhập thành
phần dữ liệu (public, private, internal, protected,
internal protected).
[thuộc tính]: có thể là static
[phạm vi truy nhập][Thuộc tính] class <tên
lớp>
{
// Khai báo các thuộc tính của lớp
// Khai báo các phương thức của lớp
}
// khai báo các phương thức class2
}
}
8
3.2. Khai báo đối tượng và sử dụng
Đối tượng là biến kiểu tham chiếu, không phải tham
trị.
• Biến đối tượng không chứa giá trị của đối tượng
• Biến chứa địa chỉ của đối tượng được tạo trong
bộ nhớ Heap
<tên lớp> <tên đối tượng> = new <tên lớp> ([các
giá trị khởi tạo nếu có])
Sử dụng từ khóa “new”
9
Ví dụ
10
Truy nhập phương thức
<tên đối tượng>. <tên phương thức> ([danh
sách các đối số nếu có])
11
3.3. Phương thức thiết lập, sao chép
Khởi tạo một đối tượng -> gọi phương thức thiết lập
(constructor)
• Phương thức thiết lập mặc định: sẽ được CLR cung
cấp nếu người lập trình không định nghĩa
• Phương thức thiết lập do người lập trình định nghĩa
Phương thức thiết lập có chức năng:
• Tạo một đối tượng của lớp và chuyển nó sang trạng
thái xác định (valid state)
• Phương thức thiết lập thường được dùng để khởi gán
• Dùng interface ICloneable của .NET
• Tự xây dựng phương thức thiết lập sao chép
(hand-copying copy constructor)
16
Dùng interface ICloneable của .NET
Class hỗ trợ hàm tạo sao chép phải
implement interface ICloneable
public Object Clone()
{
return MemberwiseClone(); // shallow copy
}
17
Ví dụ
18
Tạo phương thức thiết lập sao chép (1)
Tên hàm trùng với tên lớp
• Khai báo
public <tên lớp> (< tên lớp > <đối tượng1>)
{
gt1 = <đối tượng1>.gt1;
gt2 = <đối tượng1>. gt2;
}
• Sử dụng
<Tên_lớp> <đối tượng2> = new
<Tên_lớp> (đối tượng1);
19
Ví dụ
20
Tạo phương thức thiết lập sao chép (2)
Tên hàm trùng với tên lớp
public void Foo(OtherClass otherObject)
{
otherObject.Bar(this);
}
}
24
Từ khóa This (3)
• Sử dụng cùng với indexer (Tìm hiểu thêm)
• Gọi một hàm tạo từ hàm tạo khác của lớp
class myClass
{
public myClass(int i) { // }
public myClass( ) : this(42) { // }
}
25
Từ khóa This (4)
• Gọi tường minh các phương thức, thuộc tính của
lớp
public void MyMethod(int y)
{
…
this.Draw( );
}