TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 3
Số trang: 25
Loại file: pdf
Dung lượng: 456.46 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thừa kế và Đa hìnhGvhd: Nguyễn Tấn Trần Minh KhangBảng 5-1 Các phương thức của lớp đối tượng ObjectPhương thức Equals GetHashCode GetType ToString Finalize() MemberwiswClone Cung cấp kiểu truy cập của đối tượng Cung cấp một biểu diễn chuổi của đối tượng Xoá sạch bộ nhớ tài nguyên Tạo sao chép đối tượng;
Nội dung trích xuất từ tài liệu:
TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 3Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh KhangBảng 5-1 Các phương thức của lớp đối tượng Object Phương thức Ý nghĩa sử dụng Equals So sánh giá trị của hai đối tượng GetHashCode GetType Cung cấp kiểu truy cập của đối tượng ToString Cung cấp một biểu diễn chuổi của đối tượng Finalize() Xoá sạch bộ nhớ tài nguyên MemberwiswClone Tạo sao chép đối tượng; nhưng không thực thi kiểuVí dụ 5-3 Minh hoạ việc kế thừa lớp Object using System; public class SomeClass { public SomeClass(int val) { value = val; } public virtual string ToString( ) { return value.ToString( ); } private int value; } public class Tester { static void Main( ) { int i = 5; Console.WriteLine(The value of i is: {0}, i.ToString( )); SomeClass s = new SomeClass(7); Console.WriteLine(The value of s is {0}, s.ToString( )); } } Kết quả: The value of i is: 5 The value of s is 75.6 Kiểu Boxing và UnboxingBoxing và unboxing là tiến trình cho phép kiểu giá trị (value type) được đối xử nhưkiểu tham chiếu (reference type). Biến kiểu giá trị được gói (boxed) vào đối tượngObject, sau đó ngươc lại được tháo (unboxed) về kiểu giá trị như cũ.5.6.1 Boxing là ngầm địnhBoxing là tiến trình chuyển đổi một kiểu giá trị thành kiểu Object. Boxing là mộtgiá trị được định vị trong một thể hiện của Object. 40Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh KhangHình 5-1 Kiểu tham chiếu BoxingBoxing là ngầm định khi ta cung cấp một giá trị ở đó một tham chiếu đến giá trị nàyvà giá trị được chuyển đổi ngầm định.Ví dụ 5-4 Minh họa boxing using System; class Boxing { public static void Main( ) { int i = 123; Console.WriteLine(The object value = {0}, i); } }Console.WriteLine() mong chờ một đối tượng, không phải là số nguyên. Để phùhợp với phương thức, kiểu interger được tự động chuyển bởi CLR và ToString()được gọi để lấy kết quả đối tượng. Đặc trưng này cho phép ta tạo các phương thứclấy một đối tượng như là một tham chiếu hay giá trị tham số, phương thức sẽ làmviệc với nó.5.6.2 Unboxing phải tường minhTrả kết quả của một đối tượng về một kiểu giá trị, ta phải thực hiện mở tường minhnó. Ta nên thiết lập theo hai bước sau: 1. Chắc chắn rằng đối tượng là thể hiện của một trị đã được box. 2. Sao chép giá trị từ thể hiện này thành giá trị của biến. 41Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh KhangHình 5-2 Boxing và sau đó unboxingVí dụ 5-5 Minh họa boxing và unboxing using System; public class UnboxingTest { public static void Main( ) { int i = 123; //Boxing object o = i; // unboxing (must be explict) int j = (int) o; Console.WriteLine(j: {0}, j); } }5.7 Lớp lồngLớp được khai báo trong thân của một lớp được gọi là lớp nội (inner class) hay lớplồng (nested class), lớp kia gọi là lớp ngoại (outer class). Lớp nội có thuận lợi làtruy cập được trực tiếp tất cả các thành viên của lớp ngoài. Một phương thức củalớp nội cũng có thể truy cập đến các thành viên kiểu private của các lớp ngoài. Hơnnữa, lớp nội nó ẩn trong lớp ngoài so với các lớp khác, nó có thể là thành viên kiểuprivate của lớp ngoài. Khi lớp nội (vd: Inner) được khai báo public, nó sẽ được truyxuất thông qua tên của lớp ngoài (vd: Outer) như: Outer.Inner.Ví dụ 5-6 Cách dùng lớp nội using System; using System.Text; public class Fraction { public Fraction(int numerator, int denominator) { this.numerator=numerator; this.denominator=denominator; 42Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh Khang } // Methods elided... public override string ToString( ) { StringBuilder s = new StringBuilder( ); s.AppendFormat({0}/{1}, numerator, denominator); return s.ToString( ); } internal class FractionArtist { public void Draw(Fraction f) { Console.WriteLine(Drawing the numerator: {0}, f.numerator); Console.WriteLine(Drawing the denominator: {0}, f.denominator); } } private int numerator; private int denominator; } public class Tester { static void Main( ) { Fraction f1 = new Fraction(3,4); Console.WriteLine(f1: {0}, f1.ToString( )); Fraction.FractionArtist fa = new Fraction.FractionArtist(); fa.Draw(f1); } } 43Nạp chồng toán tử Gvhd ...
Nội dung trích xuất từ tài liệu:
TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA phần 3Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh KhangBảng 5-1 Các phương thức của lớp đối tượng Object Phương thức Ý nghĩa sử dụng Equals So sánh giá trị của hai đối tượng GetHashCode GetType Cung cấp kiểu truy cập của đối tượng ToString Cung cấp một biểu diễn chuổi của đối tượng Finalize() Xoá sạch bộ nhớ tài nguyên MemberwiswClone Tạo sao chép đối tượng; nhưng không thực thi kiểuVí dụ 5-3 Minh hoạ việc kế thừa lớp Object using System; public class SomeClass { public SomeClass(int val) { value = val; } public virtual string ToString( ) { return value.ToString( ); } private int value; } public class Tester { static void Main( ) { int i = 5; Console.WriteLine(The value of i is: {0}, i.ToString( )); SomeClass s = new SomeClass(7); Console.WriteLine(The value of s is {0}, s.ToString( )); } } Kết quả: The value of i is: 5 The value of s is 75.6 Kiểu Boxing và UnboxingBoxing và unboxing là tiến trình cho phép kiểu giá trị (value type) được đối xử nhưkiểu tham chiếu (reference type). Biến kiểu giá trị được gói (boxed) vào đối tượngObject, sau đó ngươc lại được tháo (unboxed) về kiểu giá trị như cũ.5.6.1 Boxing là ngầm địnhBoxing là tiến trình chuyển đổi một kiểu giá trị thành kiểu Object. Boxing là mộtgiá trị được định vị trong một thể hiện của Object. 40Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh KhangHình 5-1 Kiểu tham chiếu BoxingBoxing là ngầm định khi ta cung cấp một giá trị ở đó một tham chiếu đến giá trị nàyvà giá trị được chuyển đổi ngầm định.Ví dụ 5-4 Minh họa boxing using System; class Boxing { public static void Main( ) { int i = 123; Console.WriteLine(The object value = {0}, i); } }Console.WriteLine() mong chờ một đối tượng, không phải là số nguyên. Để phùhợp với phương thức, kiểu interger được tự động chuyển bởi CLR và ToString()được gọi để lấy kết quả đối tượng. Đặc trưng này cho phép ta tạo các phương thứclấy một đối tượng như là một tham chiếu hay giá trị tham số, phương thức sẽ làmviệc với nó.5.6.2 Unboxing phải tường minhTrả kết quả của một đối tượng về một kiểu giá trị, ta phải thực hiện mở tường minhnó. Ta nên thiết lập theo hai bước sau: 1. Chắc chắn rằng đối tượng là thể hiện của một trị đã được box. 2. Sao chép giá trị từ thể hiện này thành giá trị của biến. 41Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh KhangHình 5-2 Boxing và sau đó unboxingVí dụ 5-5 Minh họa boxing và unboxing using System; public class UnboxingTest { public static void Main( ) { int i = 123; //Boxing object o = i; // unboxing (must be explict) int j = (int) o; Console.WriteLine(j: {0}, j); } }5.7 Lớp lồngLớp được khai báo trong thân của một lớp được gọi là lớp nội (inner class) hay lớplồng (nested class), lớp kia gọi là lớp ngoại (outer class). Lớp nội có thuận lợi làtruy cập được trực tiếp tất cả các thành viên của lớp ngoài. Một phương thức củalớp nội cũng có thể truy cập đến các thành viên kiểu private của các lớp ngoài. Hơnnữa, lớp nội nó ẩn trong lớp ngoài so với các lớp khác, nó có thể là thành viên kiểuprivate của lớp ngoài. Khi lớp nội (vd: Inner) được khai báo public, nó sẽ được truyxuất thông qua tên của lớp ngoài (vd: Outer) như: Outer.Inner.Ví dụ 5-6 Cách dùng lớp nội using System; using System.Text; public class Fraction { public Fraction(int numerator, int denominator) { this.numerator=numerator; this.denominator=denominator; 42Thừa kế và Đa hình Gvhd: Nguyễn Tấn Trần Minh Khang } // Methods elided... public override string ToString( ) { StringBuilder s = new StringBuilder( ); s.AppendFormat({0}/{1}, numerator, denominator); return s.ToString( ); } internal class FractionArtist { public void Draw(Fraction f) { Console.WriteLine(Drawing the numerator: {0}, f.numerator); Console.WriteLine(Drawing the denominator: {0}, f.denominator); } } private int numerator; private int denominator; } public class Tester { static void Main( ) { Fraction f1 = new Fraction(3,4); Console.WriteLine(f1: {0}, f1.ToString( )); Fraction.FractionArtist fa = new Fraction.FractionArtist(); fa.Draw(f1); } } 43Nạp chồng toán tử Gvhd ...
Tìm kiếm theo từ khóa liên quan:
tin học ứng dụng lập trình C# giáo trình C# thủ thuật máy tính mẹo hay cho windowsGợi ý tài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 301 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 287 0 0 -
Tài liệu bồi dưỡng giáo viên sử dụng SGK Tin học 10 Cánh diều (Định hướng Tin học ứng dụng)
61 trang 226 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 202 0 0 -
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 201 0 0 -
101 trang 198 1 0
-
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 196 0 0 -
Hướng dẫn cách khắc phục lỗi màn hình xanh trong windows
7 trang 194 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 193 0 0 -
Tải video YouTube chất lượng gốc
4 trang 192 0 0