Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừa
Số trang: 18
Loại file: pdf
Dung lượng: 863.17 KB
Lượt xem: 15
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:
Trong nội dung của chương 3 Kế thừa thuộc bài giảng lập trình hướng đối tượng nhằm trình bày về các nội dung chính: khái niệm và đặc điểm của kế thừa các ví dụ về kế thừa, cách khai báo, sự chuyển kiểu...đó là những kiến thức cơ bản mà các bạn đang học nhập môn lập trình hướng đối tượng dễ dàng tiếp thu.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừaLẬP TRÌNHHƯỚNG ĐỐI TƯỢNGChương 3Kế thừainheritanceKế thừa (inheritance) Kế thừa là một trong các đặc điểm chính của Lập trình hướng đối tượng khi ta cần đặc biệt hoá đối tượng đã có: hãy sử dụng kế thừa bằng cách thêm một số thuộc tính và phương thức cần thiết. kế thừa giúp người lập trình tiết kiệm được thời gian và công sức vì không phải xây dựng lại từ đầu mọi thứ đã có, sử dụng lại phần code đã viếtví dụ ta đã xây dựng class Nguoi bao gồm các thuộc tính: họ tên, địa chỉ,.., các phương thức nhập, xuất, hiệu chỉnh... ta có thể xây dựng lớp SinhViên thừa kế từ lớp Người bằng cách thêm các thuộc tính: MaSV, lớp và phương thức nhập (chỉ cần viết thêm phần nhập MaSV, lớp), xuất (chỉ cần viết thêm phần xuất MaSV, lớp,...ví dụ ta đã xây dựng lớp Điểm hai chiều bao gồm các thuộc tính x,y và phương thức nhập, xuất, di chuyển,.. ta có thể xây dựng lớp điểm có màu kế thừa từ lớp điểm bằng cách bổ sung thuộc tính màu,... ví dụ: Động vật chó ví dụ: Nhân viên trưởng phòng lớp cơ sở (base class): là lớp đã được xây dựng lớp dẫn xuất(derived class): là lớp cần được xây dựng dựa trên lớp cơ sở Lớp Cơ sở Lớp Cơ sở Lớp cha Lớp dẫnxuất Lớp dẫn xuất Lớp concách khai báo [thuộc tính truy xuất] class : { //các thuộc tính bổ sung // các phương thức thêm từ khoá new để định phương thức mới trùng tên với phương thức cửa lớp cơ sở } class Nguoi {ví dụ string ho; string ten; public Nguoi(){} public Nguoi(string h,string t) { ho=h;ten=t;} Public Nguoi(Nguoi ng1) {ho=ng1.ho;ten=ng1.ten;} public void xuat() { Console.Write(“Ho va ten:{0} {1}”,ho,ten); } }class SinhVien:Nguoi{ string masv; public SinhVien (string h,string t,string m) : base(h,t) { gọi hàm thiết lập 2 masv=m; tham số của lớp Nguoi } gọi hàm xuat() của lớp public new void xuat() Nguoi { base.xuat(); Console.Write(“ Ma SV:{0}”,masv); }} kiểm thửstatic void Main(){ Nguoi ng1=new Nguoi(“Nguyen Van”, “Tèo”); ng1.xuat(); SinhVien sv1=new SinhVien(“Tran Van”, “Coi”, “310712222”); sv1.xuat();}chạy chương trình bằng F11 (debug)Ghi chú thêm từ khoá new vào trước khai báo phương thức để định nghĩa lại phương thức của lớp dẫn xuất có trùng tên với phương thức cửa lớp cơ sở base([các tham số…]): gọi hàm thiết lập của lớp dẫn xuất base.tên phương thức(…): gọi thực hiện phương thức của lớp cơ sở Khai báo hàm thiết lập của lớp dẫn xuất public tên hàm thiết lập(…):base(…){…} Khi tạo đối tượng của lớp dẫn xuất thì sẽ thực hiện hàm thiết lập của lớp cơ sở trước sau đó thực hiện phần thân của hàm thiết lập của lớp dẫn xuấtNhắc lại Access modifier Private: lớp con không nhìn thấy thành phần private của lớp cha Protected: – Phạm vi trong lớp con: nhìn thấy và có quyền truy xuất thành phần protected của lớp cha. – Phạm vi ngoài lớp con: không nhìn thấy tức là các instance không nhìn thấy thành phần protected. Public: trong và ngoài lớp con đều nhìn thấy thành phần public của lớp cha Internal: trong và ngoài lớp con đều nhìn thấy thành phần internal của lớp cha (cùng assembly) Protected internal: hoặc thoả protected hoặc thoả internalTóm lại Lớp con được phép truy xuất các thành phần protected, internal và public của lớp chaSự chuyển kiểu (casting) long val = 30000; int i = (int)val; // A valid cast. The maximum int is 2147483647 long val = 3000000000; int i = (int)val; // An invalid cast. The maximum int is 2147483647 float f1 = 40.0; long l1 = f1; // implicit short s1 = (short) l1; // explicit, old C style short s2 = short (f1); // explicit, new C++ style float f1 = 40.0f; long l1 = (long)f1; // explicit due to possible rounding error short s1 = (short) l1; // explicit due to possible overflow error int i1 = s1; // implicit _ no problems uint i2 = (uint)i1; // explicit due to possible sign errorSự chuyển kiểuBoxing/unboxing long a = 333333423; object b = (object)a; int c = (int)b; int j = 10; object boxedJ = j; // boxing int k = (int) boxedJ; // unboxingpublic class DONGVAT{ string ten; float cannang; Lớp Động vật public DONGVAT() { ten=DV; cannang=0; } public DONGVAT( ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừaLẬP TRÌNHHƯỚNG ĐỐI TƯỢNGChương 3Kế thừainheritanceKế thừa (inheritance) Kế thừa là một trong các đặc điểm chính của Lập trình hướng đối tượng khi ta cần đặc biệt hoá đối tượng đã có: hãy sử dụng kế thừa bằng cách thêm một số thuộc tính và phương thức cần thiết. kế thừa giúp người lập trình tiết kiệm được thời gian và công sức vì không phải xây dựng lại từ đầu mọi thứ đã có, sử dụng lại phần code đã viếtví dụ ta đã xây dựng class Nguoi bao gồm các thuộc tính: họ tên, địa chỉ,.., các phương thức nhập, xuất, hiệu chỉnh... ta có thể xây dựng lớp SinhViên thừa kế từ lớp Người bằng cách thêm các thuộc tính: MaSV, lớp và phương thức nhập (chỉ cần viết thêm phần nhập MaSV, lớp), xuất (chỉ cần viết thêm phần xuất MaSV, lớp,...ví dụ ta đã xây dựng lớp Điểm hai chiều bao gồm các thuộc tính x,y và phương thức nhập, xuất, di chuyển,.. ta có thể xây dựng lớp điểm có màu kế thừa từ lớp điểm bằng cách bổ sung thuộc tính màu,... ví dụ: Động vật chó ví dụ: Nhân viên trưởng phòng lớp cơ sở (base class): là lớp đã được xây dựng lớp dẫn xuất(derived class): là lớp cần được xây dựng dựa trên lớp cơ sở Lớp Cơ sở Lớp Cơ sở Lớp cha Lớp dẫnxuất Lớp dẫn xuất Lớp concách khai báo [thuộc tính truy xuất] class : { //các thuộc tính bổ sung // các phương thức thêm từ khoá new để định phương thức mới trùng tên với phương thức cửa lớp cơ sở } class Nguoi {ví dụ string ho; string ten; public Nguoi(){} public Nguoi(string h,string t) { ho=h;ten=t;} Public Nguoi(Nguoi ng1) {ho=ng1.ho;ten=ng1.ten;} public void xuat() { Console.Write(“Ho va ten:{0} {1}”,ho,ten); } }class SinhVien:Nguoi{ string masv; public SinhVien (string h,string t,string m) : base(h,t) { gọi hàm thiết lập 2 masv=m; tham số của lớp Nguoi } gọi hàm xuat() của lớp public new void xuat() Nguoi { base.xuat(); Console.Write(“ Ma SV:{0}”,masv); }} kiểm thửstatic void Main(){ Nguoi ng1=new Nguoi(“Nguyen Van”, “Tèo”); ng1.xuat(); SinhVien sv1=new SinhVien(“Tran Van”, “Coi”, “310712222”); sv1.xuat();}chạy chương trình bằng F11 (debug)Ghi chú thêm từ khoá new vào trước khai báo phương thức để định nghĩa lại phương thức của lớp dẫn xuất có trùng tên với phương thức cửa lớp cơ sở base([các tham số…]): gọi hàm thiết lập của lớp dẫn xuất base.tên phương thức(…): gọi thực hiện phương thức của lớp cơ sở Khai báo hàm thiết lập của lớp dẫn xuất public tên hàm thiết lập(…):base(…){…} Khi tạo đối tượng của lớp dẫn xuất thì sẽ thực hiện hàm thiết lập của lớp cơ sở trước sau đó thực hiện phần thân của hàm thiết lập của lớp dẫn xuấtNhắc lại Access modifier Private: lớp con không nhìn thấy thành phần private của lớp cha Protected: – Phạm vi trong lớp con: nhìn thấy và có quyền truy xuất thành phần protected của lớp cha. – Phạm vi ngoài lớp con: không nhìn thấy tức là các instance không nhìn thấy thành phần protected. Public: trong và ngoài lớp con đều nhìn thấy thành phần public của lớp cha Internal: trong và ngoài lớp con đều nhìn thấy thành phần internal của lớp cha (cùng assembly) Protected internal: hoặc thoả protected hoặc thoả internalTóm lại Lớp con được phép truy xuất các thành phần protected, internal và public của lớp chaSự chuyển kiểu (casting) long val = 30000; int i = (int)val; // A valid cast. The maximum int is 2147483647 long val = 3000000000; int i = (int)val; // An invalid cast. The maximum int is 2147483647 float f1 = 40.0; long l1 = f1; // implicit short s1 = (short) l1; // explicit, old C style short s2 = short (f1); // explicit, new C++ style float f1 = 40.0f; long l1 = (long)f1; // explicit due to possible rounding error short s1 = (short) l1; // explicit due to possible overflow error int i1 = s1; // implicit _ no problems uint i2 = (uint)i1; // explicit due to possible sign errorSự chuyển kiểuBoxing/unboxing long a = 333333423; object b = (object)a; int c = (int)b; int j = 10; object boxedJ = j; // boxing int k = (int) boxedJ; // unboxingpublic class DONGVAT{ string ten; float cannang; Lớp Động vật public DONGVAT() { ten=DV; cannang=0; } public DONGVAT( ...
Tìm kiếm theo từ khóa liên quan:
Ngôn ngữ lập trình C Bài giảng kế thừa Cách khai báo Lập trình hướng đối tượng Bài giảng lập trình hướng đối tượng Tài liệu lập trình hướng đối tượngGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 272 0 0 -
101 trang 199 1 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 149 0 0 -
14 trang 133 0 0
-
161 trang 129 1 0
-
Giáo trình Vi điều khiển PIC: Phần 1
119 trang 116 0 0 -
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 112 0 0 -
Bài giảng Phương pháp lập trình: Chương 9 - GV. Từ Thị Xuân Hiền
36 trang 111 0 0 -
Đồ án vi xử lý đề tài : nghiên cứu thiết kế mạch đo khoảng cách sử dụng vi điều khiển Pic 16F887
45 trang 97 1 0 -
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 96 0 0