Ngôn Ngữ Lập Trình C#
Câu hỏi 2: Sự khác nhau giữa giao diện và lớp trừu tượng?
Trả lời 2: Sự khác nhau cơ bản là sự kế thừa. Một lớp có thể kế thừa nhiều giao diện cùng
một lúc, nhưng không thể kế thừa nhiều hơn một lớp trừu tượng.
Câu hỏi 3: Các lớp thực thi giao diện sẽ phải làm gì?
Trả lời 3: Các lớp thực thi giao diện phải cung cấp các phần thực thi chi tiết cho các phương
thức, thuộc tính, chỉ mục, sự kiện được khai báo trong giao diện.
Câu hỏi 4: Có bao nhiêu cách gọi một phương thức được khai báo trong giao diện?
Trả lời 4: Có 4 cách gọi phương thức được khai báo trong giao diện:
Thông qua lớp cơ sở tham chiếu đến đối tượng của lớp dẫn xuất
Thông qua một giao diện tạo từ lớp cơ sở tham chiếu đến đối tượng dẫn xuất
Thông qua một đối tượng dẫn xuất
Thông qua giao diện tạo từ đối tượng dẫn xuất
Câu hỏi 5: Các thành viên của giao diện có thể có những thuộc tính truy cập nào?
Trả lời 5: Mặc định các thành viên của giao diện là public. Vì mục tiêu của giao diện là xây
dựng cho các lớp khác sử dụng. Nếu chúng ta thay đổi thuộc tính này như là internal,
protected hay private thì sẽ gây ra lỗi.
Câu hỏi 6: Chúng ta có thể tạo thể hiện của giao diện một cách trực tiếp được không?
Trả lời 6: Không thể tạo thể hiện của giao diện trực tiếp bằng khai báo new được. Chúng ta
chỉ có thể tạo thể hiện giao diện thông qua một phép gán với đối tượng thực thi giao diện.
Câu hỏi thêm
Câu hỏi 1: Toán tử is được dùng làm gì trong giao diện?
Câu hỏi 2: Toán tử as có lợi hơn toán tử is về mặt nào khi được sử dụng liện quan đến giao
diện?
Câu hỏi 3: Giao diện là kiểu dữ liệu tham chiếu hay kiểu giá trị?
Câu hỏi 4: Khi thực thi giao diện với cấu trúc. Thì truy cập các thành viên của giao diện
thông qua đối tượng hay thông qua tham chiếu giao diện là tốt nhất?
Câu hỏi 5: Số giao diện có thể được kế thừa cho một lớp?
Câu hỏi 6: Việc thực thi giao diện tường minh là thực thi như thế nào? Trong trường hợp
nào thì cần thực hiện tường minh?
Bài tập
Bài tập 1: Hãy viết một giao diện khai báo một thuộc tính ID chứa chuỗi giá trị. Viết một lớp
Employee thực thi giao diện đó.
Bài tập 2: Đọan mã nguồn sau đây có lỗi hãy sử lỗi và hãy cho biết tại sao có lỗi này. Sau
khi sửa lỗi hãy viết một lớp Circle thực thi giao diện này?
public interface IDimensions
{
Thực Thi Giao Diện
208
.
.
Ngôn Ngữ Lập Trình C#
long width;
long height;
double Area();
double Circumference();
int Side();
}
Bài tập 3: Chương trình sau đây có lỗi hãy sử lỗi, biên dịch và chạy lại chương trình? Giải
thích tại sao chương trình có lỗi.
using System;
interface IPoint
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class MyPoint : IPoint
{
// Fields:
private int myX;
private int myY;
// Constructor:
public MyPoint(int x, int y)
{
myX = x;
myY = y;
}
// Property implementation:
public int x
Thực Thi Giao Diện
209
.
.
Ngôn Ngữ Lập Trình C#
{
get
{
return myX;
}
set
{
myX = value;
}
}
public int y
{
get
{
return myY;
}
set
{
myY = value;
}
}
}
class MainClass
{
private static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
public static void Main()
{
MyPoint p = new MyPoint(2,3);
Console.Write("My Point: ");
PrintPoint(p);
IPoint p2 = new IPoint();
PrintPoint(p2);
}
}
Thực Thi Giao Diện
210
.
.
Ngôn Ngữ Lập Trình C#
Bài tập 4: Xây dựng một giao diện IDisplay có khai báo thuộc tính Name kiểu chuỗi. Hãy
viết hai lớp Dog và Cat thực thi giao diện IDisplay, cho biết thuộc tính Name là tên của đối
tượng.
Thực Thi Giao Diện
211
.
.
Ngôn Ngữ Lập Trình C#
Chương 9
MẢNG, CHỈ MỤC, VÀ TẬP HỢP
Mảng
Khai báo mảng
Giá trị mặc định
Truy cập các thành phần trong mảng
Khởi tạo thành phần trong mảng
Sử dụng từ khóa params
Câu lệnh lặp foreach
Mảng đa chiều
Mảng đa chiều cùng kích thước
Mảng đa chiều kích thước khác nhau
Chuyển đổi mảng
System.Array
Bộ chỉ mục
Bộ chỉ mục và phép gán
Sử dụng kiểu chỉ số khác
Giao diện tập hợp
Câu hỏi & bài tập
Môi trường .NET cung cấp rất đa dạng số lượng các lớp về tập hợp, bao gồm: Array,
ArrayList, Queue, Stack, BitArray, NameValueCollection, và StringCollection.
Trong số đó tập hợp đơn giản nhất là Array, đây là kiểu dữ liệu tập hợp mà ngôn ngữ C#
hỗ trợ xây dựng sẵn. Chương này chúng ta sẽ tìm hiểu cách làm việc với mảng một chiều,
mảng đa chiều, và mảng các mảng (jagged array). Chúng ta cũng được giới thiệu phần chỉ
mục indexer, đây là cách thiết lập để làm cho việc truy cập những thuộc tính giống nhau trở
nên đơn giản hơn, một lớp được chỉ mục thì giống như một mảng.
Mảng, Chỉ Mục, và Tập Hợp
212
.
.