Tải bản đầy đủ (.ppt) (32 trang)

BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA(Chương 4)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (277.43 KB, 32 trang )

Slide 1/33
Chương 04
TÍNH KẾ THỪA VÀ ĐA HÌNH
INHERITANCE - POLYMORPHISM
Slide 2/33
Ôn tập

Accsess modifier: chỉ thị mức độ cho phép bên ngoài
truy cập vào một dữ liệu hay một hành vi của 1 lớp.

Khi thiết kế 1 lớp: Cần xem xét để chọn access modifier
phù hợp đối với từng thành phần.

Nếu muốn kết thúc một lớp( lớp không con), một hành
vi (không cho hiệu chỉnh), một dữ liệu (là hằng): Dùng
chỉ thị final.

Dữ liệu static là dữ liệu toàn cục của chương trình.

Code static là code được thực thi ngay lúc lớp được
tham khảo đến.

Hành vi static là hàm toàn cục.

Truy xuất thành phần static thông qua tên lớp hoặc một
đối tượng thuộc lớp.
Slide 3/33
Ôn tập

Constructor: Hành vi được thực thi ngay lúc khởi tạo đối
tượng.



Tập các constructor tạo ra tập các mẫu khởi tạo biến đối
tượng.

Một đối tượng sống từ lúc đối tượng được khởi tạo (bằng
new) cho đến khi khối chứa nó được thực thi xong.

Tầm vực của 1 đối tượng là vùng văn bản chương trình
từ lúc định nghĩa biến đến hết khối chứa biến này.

Destructor: Hành vi được thực thi vào lúc đối tượng chết (
Java không hỗ trợ destructor).
Slide 4/33
Đặc tính truy xuất
Modifier private friendly protected public
Cùng class YES YES YES YES
Cùng gói, khác
class
NO YES YES YES
lớp con trong
cùng gói với
lớp cha
NO YES YES YES
Khác gói, khác
lớp
NO NO NO YES
Lớp con khác
gói với lớp cha
NO NO YES YES
Slide 5/33

Mục tiêu

Giải thích được:

Thừa kế là gì trong OOP.

Các loại thừa kế trong các ngôn ngữ OOP.

Đa hình là gì trong OOP.

Phân biệt được kỹ thuật Overloading và Overriding.

Hiện thực được đặc điểm thừa kế trong OOP với Java.

Hiện thực được đặc điểm đa hình trong OOP với Java.

Sử dụng được toán tử instanceof và ép kiểu trong Java

Giải thích được những tình huống có thể xẩy ra khi ép
kiểu.

Giải thích được loại tham số trong hàm của Java.
Slide 6/33
Nội dung
4.1- Tính kế thừa – Inheritance.
4.2- Các loại thừa kế.
4.3- Hiện thực lớp con trong Java.
4.4- Tính đa hình.
4.5- Kỹ thuật Overriding
4.6- Quan hệ qiữa các lớp

4.7- Toán tử instanceof
4.8- Vấn đề ép kiểu trong Java
4.9- Tham số của hàm trong Java
Slide 7/33
4.1- Tính kế thừa – Inheriatance

Khả năng một lớp thừa hưởng data và
code từ một hay nhiều lớp khác.

Kỹ thuật giúp tái sử dụng code  Tiết
kiệm công sức lập trình, công sức kiểm
tra code.
Slide 8/33
4.2- Các loại thừa kế.

Đơn thừa kế

Đa thừa kế ( thừa kế bội)

Mỗi ngôn ngữ OOP hỗ trợ khả năng thừa
kế riêng.

C++ : đa thừa kế.

C# , Java : Đơn thừa kế
Slide 9/33
4.3- Hiện thực lớp con trong Java.
class CLASSNAME extends FATHERCLASSNAME
{ DataType1 Property1 [=Value];
DataType2 Property1 [=Value];

CLASSNAME (DataType Arg,…) // constructor
{… }
[Modifier] DataType MethodName( DataType Arg,…)
{ … }
}
Lớp con là mở rộng
của lớp cha
Slide 10/33
100
emp
mng
p
200
300
P01
Hoa
21
P02
Luan
25
150
P03
Quang
25
150
200
100
200
300
Thí dụ về thừa kế

Slide 11/33
Bài tập
Phân tích phân cấp thừa kế cho các lớp:
(làm tại lớp)

Hàng điện máy <mã hàng, tên hàng, nhà sản
xuất, giá, thời gian bảo hành, điện áp, công
suất>

Hàng sành sứ < mã hàng, tên hàng, nhà sản
xuất, giá, loại nguyên liệu>

Hàng thực phẩm <mã hàng, tên hàng, nhà sản
xuất, giá, ngày sản xuất, ngày hết hạn dùng>
Viết chương trình tạo mỗi loại một mặt hàng cụ
thể. xuất thông tin về các mặt hàng này (Lab)

Gợi ý: cách viết tương tự thí dụ vừa rồi.
Slide 12/33
4.4- Tính đa hình - Polymorphism

Đa hình thái, nhiều cách phản ứng khác nhau cho cùng
một hành vi.

Lớp A có hành vi M().

Lớp B là con của lớp A, trong lớp B viết lại hành vi M().

Có biến đối tượng obj.


Tại thời điểm t1: obj chỉ đến một thực thể A. obj.M() sẽ
cho một phản ứng.

Tại thời điểm t2: obj chỉ đến một thực thể B. obj.M() sẽ
cho một phản ứng khác.

Tính đa hình có được là nhờ kỹ thuật override hành vi
giữa 2 lớp cha con.

×