LTHDT - Bài 06. Một số kỹ thuật trong kế thừa
Số trang: 35
Loại file: pdf
Dung lượng: 1.04 MB
Lượt xem: 24
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Mục tiêu của bài học Trình bày nguyên lý định nghĩa lại trong kế thừa Đơn kế thừa và đa kế thừa Giao diện và lớp trừu tượng Sử dụng các vấn đề trên với ngôn ngữ lập trình Java. 1. Định nghĩa lại (Redefine/Overiding) 2. Lớp trừu tượng (Abstract class) 3. Đơn kế thừa và đa kế thừa 4. Giao diện (Interface) 1. Định nghĩa lại (Redefine/Overiding) 2. Lớp trừu tượng (Abstract class) 3. Đơn kế thừa và đa kế thừa 4. Giao diện (Interface)...
Nội dung trích xuất từ tài liệu:
LTHDT - Bài 06. Một số kỹ thuật trong kế thừa 1 BỘ MÔN CÔNG NGHỆ PHẦN MỀM ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘINGÔN NGỮ LÝ THUYẾT HĐTBài 06. Một số kỹ thuật trong kế thừa 2Mục tiêu của bài học• Trình bày nguyên lý định nghĩa lại trong kế thừa• Đơn kế thừa và đa kế thừa• Giao diện và lớp trừu tượng• Sử dụng các vấn đề trên với ngôn ngữ lập trình Java. 3Nội dung1. Định nghĩa lại (Redefine/Overiding)2. Lớp trừu tượng (Abstract class)3. Đơn kế thừa và đa kế thừa4. Giao diện (Interface) 4Nội dung1. Định nghĩa lại (Redefine/Overiding)2. Lớp trừu tượng (Abstract class)3. Đơn kế thừa và đa kế thừa4. Giao diện (Interface) 51. Định nghĩa lại hay ghi đè• Lớp con có thể định nghĩa phương thức trùng tên với phương thức trong lớp cha: ▫ Nếu phương thức mới chỉ trùng tên và khác chữ ký (số lượng hay kiểu dữ liệu của đối số) ▫ Chồng phương thức (Method Overloading) ▫ Nếu phương thức mới hoàn toàn giống về giao diện (chữ ký) ▫ Định nghĩa lại hoặc ghi đè ▫ (Method Redefine/Override) 61. Định nghĩa lại hay ghi đè (2)• Phương thức ghi đè sẽ thay thế hoặc làm rõ hơn cho phương thức cùng tên trong lớp cha• Đối tượng của lớp con sẽ hoạt động với phương thức mới phù hợp với nó 7class Shape { protected String name; Shape(String n) { name = n; } public String getName() { return name; } public float calculateArea() { return 0.0f; }}class Circle extends Shape { private int radius; Circle(String n, int r){ super(n); radius = r; } public float calculateArea() { float area = (float) (3.14 * radius * radius); return area; }} 8class Square extends Shape { private int side; Square(String n, int s) { super(n); side = s; } public float calculateArea() { float area = (float) side * side; return area; }} 9Thêm lớp Triangleclass Triangle extends Shape { private int base, height; Triangle(String n, int b, int h) { super(n); base = b; height = h; } public float calculateArea() { float area = 0.5f * base * height; return area; }} 10this và super• this và super có thể sử dụng cho các phương thức/thuộc tính non-static và phương thức khởi tạo ▫ this: tìm kiếm phương thức/thuộc tính trong lớp hiện tại ▫ super: tìm kiếm phương thức/thuộc tính trong lớp cha trực tiếp• Từ khóa super cho phép tái sử dụng các đoạn mã của lớp cha trong lớp con 11package abc;public class Person { protected String name; protected int age; public String getDetail() { String s = name + , + age; return s; }}import abc.Person;public class Employee extends Person { double salary; public String getDetail() { String s = super.getDetail() + , + salary; return s; }} 121. Định nghĩa lại hay ghi đè (3)• Một số quy định ▫ Phương thức ghi đè trong lớp con phải Có danh sách tham số giống hệt phương thức kế thừa trong lớp cha. Có cùng kiểu trả về với phương thức kế thừa trong lớp cha ▫ Không được phép ghi đè: Các phương thức hằng (final) trong lớp cha Các phương thức static trong lớp cha Các phương thức private trong lớp cha 131. Định nghĩa lại hay ghi đè (3)• Một số quy định (tiếp) ▫ Các chỉ định truy cập không giới hạn chặt hơn phương thức trong lớp cha Ví dụ, nếu ghi đè một phương thức protected, thì phương thức mới có thể là protected hoặc public, mà không được là private. 14Ví dụclass Parent { public void doSomething() {} protected int doSomething2() { return 0; cannot override: attempting to use } incompatible return type}class Child extends Parent { protected void doSomething() {} protected void doSomething2() {}} cannot override: attempting to assign weaker access privileges; was public 15Ví dụclass Parent { public void doSomething() {} private int doSomething2() { return 0; }}class Child extends Parent { public void doSomething() {} private void doSomething2() {}} ...
Nội dung trích xuất từ tài liệu:
LTHDT - Bài 06. Một số kỹ thuật trong kế thừa 1 BỘ MÔN CÔNG NGHỆ PHẦN MỀM ViỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘINGÔN NGỮ LÝ THUYẾT HĐTBài 06. Một số kỹ thuật trong kế thừa 2Mục tiêu của bài học• Trình bày nguyên lý định nghĩa lại trong kế thừa• Đơn kế thừa và đa kế thừa• Giao diện và lớp trừu tượng• Sử dụng các vấn đề trên với ngôn ngữ lập trình Java. 3Nội dung1. Định nghĩa lại (Redefine/Overiding)2. Lớp trừu tượng (Abstract class)3. Đơn kế thừa và đa kế thừa4. Giao diện (Interface) 4Nội dung1. Định nghĩa lại (Redefine/Overiding)2. Lớp trừu tượng (Abstract class)3. Đơn kế thừa và đa kế thừa4. Giao diện (Interface) 51. Định nghĩa lại hay ghi đè• Lớp con có thể định nghĩa phương thức trùng tên với phương thức trong lớp cha: ▫ Nếu phương thức mới chỉ trùng tên và khác chữ ký (số lượng hay kiểu dữ liệu của đối số) ▫ Chồng phương thức (Method Overloading) ▫ Nếu phương thức mới hoàn toàn giống về giao diện (chữ ký) ▫ Định nghĩa lại hoặc ghi đè ▫ (Method Redefine/Override) 61. Định nghĩa lại hay ghi đè (2)• Phương thức ghi đè sẽ thay thế hoặc làm rõ hơn cho phương thức cùng tên trong lớp cha• Đối tượng của lớp con sẽ hoạt động với phương thức mới phù hợp với nó 7class Shape { protected String name; Shape(String n) { name = n; } public String getName() { return name; } public float calculateArea() { return 0.0f; }}class Circle extends Shape { private int radius; Circle(String n, int r){ super(n); radius = r; } public float calculateArea() { float area = (float) (3.14 * radius * radius); return area; }} 8class Square extends Shape { private int side; Square(String n, int s) { super(n); side = s; } public float calculateArea() { float area = (float) side * side; return area; }} 9Thêm lớp Triangleclass Triangle extends Shape { private int base, height; Triangle(String n, int b, int h) { super(n); base = b; height = h; } public float calculateArea() { float area = 0.5f * base * height; return area; }} 10this và super• this và super có thể sử dụng cho các phương thức/thuộc tính non-static và phương thức khởi tạo ▫ this: tìm kiếm phương thức/thuộc tính trong lớp hiện tại ▫ super: tìm kiếm phương thức/thuộc tính trong lớp cha trực tiếp• Từ khóa super cho phép tái sử dụng các đoạn mã của lớp cha trong lớp con 11package abc;public class Person { protected String name; protected int age; public String getDetail() { String s = name + , + age; return s; }}import abc.Person;public class Employee extends Person { double salary; public String getDetail() { String s = super.getDetail() + , + salary; return s; }} 121. Định nghĩa lại hay ghi đè (3)• Một số quy định ▫ Phương thức ghi đè trong lớp con phải Có danh sách tham số giống hệt phương thức kế thừa trong lớp cha. Có cùng kiểu trả về với phương thức kế thừa trong lớp cha ▫ Không được phép ghi đè: Các phương thức hằng (final) trong lớp cha Các phương thức static trong lớp cha Các phương thức private trong lớp cha 131. Định nghĩa lại hay ghi đè (3)• Một số quy định (tiếp) ▫ Các chỉ định truy cập không giới hạn chặt hơn phương thức trong lớp cha Ví dụ, nếu ghi đè một phương thức protected, thì phương thức mới có thể là protected hoặc public, mà không được là private. 14Ví dụclass Parent { public void doSomething() {} protected int doSomething2() { return 0; cannot override: attempting to use } incompatible return type}class Child extends Parent { protected void doSomething() {} protected void doSomething2() {}} cannot override: attempting to assign weaker access privileges; was public 15Ví dụclass Parent { public void doSomething() {} private int doSomething2() { return 0; }}class Child extends Parent { public void doSomething() {} private void doSomething2() {}} ...
Tìm kiếm theo từ khóa liên quan:
công nghệ hướng đối tượng ngôn ngữ lập trình lập trình java java cơ bản kiểu dữ liệu chương trình javaTài liệu có liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 316 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 309 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 293 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 248 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 247 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 242 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 231 1 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 204 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 196 0 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 189 0 0