SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Bài 8
Đa hình
Trịnh Thành Trung
trungtt@soict.hust.edu.vn
Nội dung
1. Upcasting và
downcasting
2. Đa hình
3. Liên kết tĩnh và liên kết
động
Up-casting và down-casting
Chuyển đổi kiểu dữ liệu đối tượng
1
4
Chuyển đổi kiểu dữ liệu nguyên
thủy
• Java tự động chuyển đổi kiểu khi
− Kiểu dữ liệu tương thích
− Chuyển đổi từ kiểu hẹp hơn sang kiểu rộng hơn
int i;
double d = i;
• Phải ép kiểu khi
− Kiểu dữ liệu tương thích
− Chuyển đổi từ kiểu rộng hơn sang kiểu hẹp hơn
int i;
byte b = i; byte b = (byte)i;
5
Chuyển đổi kiểu dữ liệu tham
chiếu
• Kiểu dữ liệu tham chiếu có thể được
chuyển đổi kiểu khi
• Kiểu dữ liệu tham chiếu (lớp) tương thích
• Nằm trên cùng một cây phân cấp kế thừa
• Hai cách chuyển đổi
• Up-casting
• Down-casting
A
B
C
6
Up-casting
• Up casting: đi lên trên cây phân cấp thừa kế
(moving up the inheritance hierarchy)
• Up casting là khả năng nhìn nhận đối tượng
thuộc lớp dẫn xuất như là một đối tượng thuộc
lớp cơ sở.
• Tự động chuyển đổi kiểu
7
Ví dụ
public class Test1 {
public static void main(String arg[]) {
Employee e = new Employee();
Person p;
p = e;
p.setName(“Hoa”);
p.setSalary(350000);
// compile error
}
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
8
Ví dụ
class Manager extends Employee {
Employee assistant;
// ...
public void setAssistant(Employee e) {
assistant = e;
}
// ...
}
public class Test2 {
public static void main(String arg[]) {
Manager junior, senior;
// ...
senior.setAssistant(junior);
}
}
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
Manager
- assistant: Employee
+ setAssistant(Employee)
+ getDetails():String
9
Ví dụ
public class Test3 {
String static teamInfo(Person p1, Person p2) {
return "Leader: " + p1.getName() +
", member: " + p2.getName();
}
public static void main(String arg[]) {
Employee e1, e2;
Manager m1, m2;
// ...
System.out.println(teamInfo(e1, e2));
System.out.println(teamInfo(m1, m2));
System.out.println(teamInfo(m1, e2));
}
}
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
Manager
- assistant: Employee
+ setAssistant(Employee)
+ getDetails():String
10
• Down casting: đi xuống cây phân cấp thừa kế
(move back down the inheritance hierarchy)
• Down casting là khả năng nhìn nhận một đối
tượng thuộc lớp cơ sở như một đối tượng thuộc
lớp dẫn xuất.
• Không tự động chuyển đổi kiểu
 Phải ép kiểu.
Down-casting
11
Ví dụ
public class Test2 {
public static void main(String arg[]) {
Employee e = new Employee();
Person p = e; // up casting
Employee ee = (Employee) p;
// down casting
Manager m = (Manager) ee;
// run-time error
Person p2 = new Manager();
Employee e2 = (Employee) p2;
}
}
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
Manager
- assistant: Employee
+ setAssistant(Employee)
+ getDetails():String
Liên kết tĩnh và liên kết
động
Static binding & dynamic binding
2
13
Liên kết lời gọi hàm
• Liên kết lời gọi hàm (function call binding) là quy
trình xác định khối mã hàm cần chạy khi một lời
gọi hàm được thực hiện
• C: đơn giản vì mỗi hàm có duy nhất một tên
• C++: chồng hàm, phân tích chữ ký kiểm tra danh
sách tham số.
14
Trong ngôn ngữ HĐT
• Liên kết lời gọi phương thức
• Đối với các lớp độc lập (không thuộc cây thừa kế
nào), quy trình này gần như không khác với
function call binding
− so sánh tên phương thức, danh sách tham số để tìm định
nghĩa tương ứng
− một trong số các tham số là tham số ẩn: con trỏ this
15
Liên kết tĩnh
• Liên kết tại thời điểm biên dịch
− Early Binding/Compile-time Binding
− Lời gọi phương thức được quyết định khi biên dịch, do
đó chỉ có một phiên bản của phương thức được thực
hiện
− Nếu có lỗi thì sẽ có lỗi biên dịch
− Ưu điểm về tốc độ
• C/C++ function call binding, và C++ method
binding cơ bản đều là ví dụ của liên kết tĩnh
(static function call binding)
16
Liên kết động
• Lời gọi phương thức được quyết định khi thực
hiện (run-time)
− Late binding/Run-time binding
− Phiên bản của phương thức phù hợp với đối tượng được
gọi.
− Java mặc định sử dụng liên kết động
17
Ví dụ
public class Test {
public static void main(String arg[]){
Person p = new Person();
// ...
Employee e = new Employee();
// ...
Manager m = new Manager();
// ...
Person pArr[] = {p, e, m};
for (int i=0; i< pArr.length; i++){
System.out.println(
pArr[i].getDetail());
}
}
}
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
Manager
- assistant: Employee
+ setAssistant(Employee)
+ getDetails():String
Đa hình
Polymorphism
3
19
• Polymorphism: Nhiều hình thức thực hiện, nhiều
kiểu tồn tại
• Đa hình trong lập trình
− Đa hình phương thức:
+ Phương thức trùng tên, phân biệt bởi danh sách tham số.
− Đa hình đối tượng
+ Nhìn nhận đối tượng theo nhiều kiểu khác nhau
+ Các đối tượng khác nhau cùng đáp ứng chung danh sách các
thông điệp có giải nghĩa thông điệp theo cách thức khác
nhau.
Đa hình
20
Ví dụ
• Các đối tượng khác nhau giải nghĩa
các thông điệp theo các cách thức
khác nhau
• Liên kết động (Java)
Person p1 = new Person();
Person p2 = new Employee();
Person p3 = new Manager();
// ...
System.out.println(p1.getDetail());
System.out.println(p2.getDetail());
System.out.println(p3.getDetail());
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
Manager
- assistant: Employee
+ setAssistant(Employee)
+ getDetails():String
21
Ví dụ
class EmployeeList {
Employee list[];
...
public void add(Employee e) {...}
public void print() {
for (int i=0; i<list.length; i++) {
System.out.println(list[i].getDetail());
}
}
...
EmployeeList list = new EmployeeList();
Employee e1; Manager m1;
...
list.add(e1); list.add(m1);
list.print();
Person
- name: String
- birthday: Date
+ setName(String)
+ setBirthday(Date)
+ getDetails(): String
Employee
- salary: double
+ setSalary(double)
+ getDetails(): String
Manager
- assistant: Employee
+ setAssistant(Employee)
+ getDetails():String
• Kiểm tra xem một đối tượng có phải là thể
hiện của một lớp nào đó không
public class Employee extends Person {}
public class Student extends Person {}
public class Test{
public doSomething(Person e) {
if (e instanceof Employee) {...
} else if (e instanceof Student) {...
} else {...
}
}
}
Toán tử instanceof
23
Ví dụ
• Các đối tượng Triangle, Rectangle, Circle đều là
các đối tượng Shape
...
public static void handleShapes(Shape[] shapes){
// Vẽ các hình theo cách riêng của mỗi hình
for( int i = 0; i < shapes.length; ++i) {
shapes[i].draw();
}
...
// Gọi đến phương thức xóa, không cần quan tâm
// đó là hình gì
for( int i = 0; i < shapes.length; ++i) {
shapes[i].erase();
}
}
...
Ví dụ
Tổng kết
• Upcasting và downcasting
• Nhìn nhận các đối tượng thuộc lớp cơ sở như đối
tượng thuộc lớp dẫn xuất (upcasting) và ngược lại
(down-casting)
• Liên kết tĩnh và liên kết động
• Liên kết lời gọi hàm lúc biên dịch (liên kết tĩnh)
hay lúc chạy chương trình (liên kết động)
• Đa hình
• Nhìn nhận một đối tượng dưới nhiều kiểu khác
nhau
Thank you!
Any questions?

Mais conteúdo relacionado

Mais procurados

Oop unit 03 xây dựng lớp
Oop unit 03 xây dựng lớpOop unit 03 xây dựng lớp
Oop unit 03 xây dựng lớpTráng Hà Viết
 
Oop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiệnOop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiệnTráng Hà Viết
 
Oop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlOop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlTráng Hà Viết
 
Oop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngOop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngTráng Hà Viết
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituongNhuận Lê Văn
 
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTMasterCode.vn
 
Bai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaileBai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaileNhuận Lê Văn
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaNhuận Lê Văn
 
[Cntt] bài giảng lập trình java bkhcm
[Cntt] bài giảng lập trình java   bkhcm[Cntt] bài giảng lập trình java   bkhcm
[Cntt] bài giảng lập trình java bkhcmHong Phuoc Nguyen
 
Bài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPTBài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPTMasterCode.vn
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituongMinh Ngoc Tran
 

Mais procurados (20)

Oop unit 03 xây dựng lớp
Oop unit 03 xây dựng lớpOop unit 03 xây dựng lớp
Oop unit 03 xây dựng lớp
 
Oop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiệnOop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiện
 
Oop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlOop unit 13 tổng quan về uml
Oop unit 13 tổng quan về uml
 
Bai07 da hinh
Bai07 da hinhBai07 da hinh
Bai07 da hinh
 
Bai05 ket tapvakethua
Bai05 ket tapvakethuaBai05 ket tapvakethua
Bai05 ket tapvakethua
 
Oop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngOop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượng
 
Bai08 10 java_fx
Bai08 10 java_fxBai08 10 java_fx
Bai08 10 java_fx
 
Bai08 lap trinhtongquat
Bai08 lap trinhtongquatBai08 lap trinhtongquat
Bai08 lap trinhtongquat
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituong
 
Bai03 xay dunglop
Bai03 xay dunglopBai03 xay dunglop
Bai03 xay dunglop
 
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
 
Bai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaileBai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaile
 
Bai02 java introduction
Bai02 java introductionBai02 java introduction
Bai02 java introduction
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethua
 
[Cntt] bài giảng lập trình java bkhcm
[Cntt] bài giảng lập trình java   bkhcm[Cntt] bài giảng lập trình java   bkhcm
[Cntt] bài giảng lập trình java bkhcm
 
Bài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPTBài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPT
 
Bai11 ooad bieu_dolop
Bai11 ooad bieu_dolopBai11 ooad bieu_dolop
Bai11 ooad bieu_dolop
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
 

Destaque

Presentation by abhijith suresh
Presentation by abhijith sureshPresentation by abhijith suresh
Presentation by abhijith sureshabhijith suresh
 
рOland 2016
рOland 2016рOland 2016
рOland 2016x-mss
 
Gestion proyecto empresa
Gestion proyecto  empresaGestion proyecto  empresa
Gestion proyecto empresaAnthony Lopez
 
Delight 2016 part2
Delight 2016 part2Delight 2016 part2
Delight 2016 part2x-mss
 
Sustainable Solution in Hang Tag Production
Sustainable Solution in Hang Tag ProductionSustainable Solution in Hang Tag Production
Sustainable Solution in Hang Tag ProductionAsif Iqbal
 

Destaque (7)

IBA AR1213 AccPDF
IBA AR1213 AccPDFIBA AR1213 AccPDF
IBA AR1213 AccPDF
 
Presentation by abhijith suresh
Presentation by abhijith sureshPresentation by abhijith suresh
Presentation by abhijith suresh
 
рOland 2016
рOland 2016рOland 2016
рOland 2016
 
redes-sociales
redes-socialesredes-sociales
redes-sociales
 
Gestion proyecto empresa
Gestion proyecto  empresaGestion proyecto  empresa
Gestion proyecto empresa
 
Delight 2016 part2
Delight 2016 part2Delight 2016 part2
Delight 2016 part2
 
Sustainable Solution in Hang Tag Production
Sustainable Solution in Hang Tag ProductionSustainable Solution in Hang Tag Production
Sustainable Solution in Hang Tag Production
 

Semelhante a Oop unit 08 đa hình

Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượngHưởng Nguyễn
 
Java ease learning(1)
Java ease learning(1)Java ease learning(1)
Java ease learning(1)Nguyen Xuan
 
Pdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnPdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnMasterCode.vn
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01giang
 
Android Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderAndroid Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderPhuoc Nguyen
 
Pplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPix Nhox
 
Pplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09a
Pplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09aPplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09a
Pplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09aPix Nhox
 
Php03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongPhp03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongconglongit90
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdfSonNguyen642431
 
Lập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programmingLập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programmingbeatmaking
 
Programming Methodology Ii
Programming Methodology IiProgramming Methodology Ii
Programming Methodology Iimark
 
Jniについて
JniについてJniについて
JniについてChu Chu
 

Semelhante a Oop unit 08 đa hình (20)

Chuong5 (2)
Chuong5 (2)Chuong5 (2)
Chuong5 (2)
 
Ctdl lab01
Ctdl lab01Ctdl lab01
Ctdl lab01
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượng
 
Java ease learning(1)
Java ease learning(1)Java ease learning(1)
Java ease learning(1)
 
Pdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnPdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vn
 
Giáo trình c#
Giáo trình c#Giáo trình c#
Giáo trình c#
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01
 
On thitotnghiep
On thitotnghiepOn thitotnghiep
On thitotnghiep
 
File trong c_
File trong c_File trong c_
File trong c_
 
Chuong3 c
Chuong3 c Chuong3 c
Chuong3 c
 
Chuong8 (2)
Chuong8 (2)Chuong8 (2)
Chuong8 (2)
 
Android Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderAndroid Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content Provider
 
Pplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09a
 
Pplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09a
Pplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09aPplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09a
Pplthdt c04 thuoc_tinhdoituong_phuongthuc_v13.09a
 
Tut6 solution
Tut6 solutionTut6 solution
Tut6 solution
 
Php03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongPhp03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdong
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf
 
Lập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programmingLập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programming
 
Programming Methodology Ii
Programming Methodology IiProgramming Methodology Ii
Programming Methodology Ii
 
Jniについて
JniについてJniについて
Jniについて
 

Mais de Tráng Hà Viết

Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebookTài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebookTráng Hà Viết
 
Artificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieuArtificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieuTráng Hà Viết
 
Artificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tuArtificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tuTráng Hà Viết
 
Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040Tráng Hà Viết
 
Artificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buocArtificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buocTráng Hà Viết
 
Artificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dienArtificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dienTráng Hà Viết
 
Artificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicArtificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicTráng Hà Viết
 
Artificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thucArtificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thucTráng Hà Viết
 
Artificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayArtificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayTráng Hà Viết
 
Artificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_banArtificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_banTráng Hà Viết
 
Công cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFishCông cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFishTráng Hà Viết
 

Mais de Tráng Hà Viết (11)

Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebookTài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebook
 
Artificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieuArtificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieu
 
Artificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tuArtificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tu
 
Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040
 
Artificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buocArtificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buoc
 
Artificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dienArtificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dien
 
Artificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicArtificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristic
 
Artificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thucArtificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thuc
 
Artificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayArtificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc may
 
Artificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_banArtificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_ban
 
Công cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFishCông cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFish
 

Último

Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiNgocNguyen591215
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgsNmmeomeo
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnpmtiendhti14a5hn
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...hoangtuansinh1
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhdtlnnm
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdfltbdieu
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...Nguyen Thanh Tu Collection
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxDungxPeach
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoidnghia2002
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfXem Số Mệnh
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...ChuThNgnFEFPLHN
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfXem Số Mệnh
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptPhamThiThuThuy1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...Nguyen Thanh Tu Collection
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phươnghazzthuan
 

Último (20)

Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 

Oop unit 08 đa hình

  • 1. Bài 8 Đa hình Trịnh Thành Trung trungtt@soict.hust.edu.vn
  • 2. Nội dung 1. Upcasting và downcasting 2. Đa hình 3. Liên kết tĩnh và liên kết động
  • 3. Up-casting và down-casting Chuyển đổi kiểu dữ liệu đối tượng 1
  • 4. 4 Chuyển đổi kiểu dữ liệu nguyên thủy • Java tự động chuyển đổi kiểu khi − Kiểu dữ liệu tương thích − Chuyển đổi từ kiểu hẹp hơn sang kiểu rộng hơn int i; double d = i; • Phải ép kiểu khi − Kiểu dữ liệu tương thích − Chuyển đổi từ kiểu rộng hơn sang kiểu hẹp hơn int i; byte b = i; byte b = (byte)i;
  • 5. 5 Chuyển đổi kiểu dữ liệu tham chiếu • Kiểu dữ liệu tham chiếu có thể được chuyển đổi kiểu khi • Kiểu dữ liệu tham chiếu (lớp) tương thích • Nằm trên cùng một cây phân cấp kế thừa • Hai cách chuyển đổi • Up-casting • Down-casting A B C
  • 6. 6 Up-casting • Up casting: đi lên trên cây phân cấp thừa kế (moving up the inheritance hierarchy) • Up casting là khả năng nhìn nhận đối tượng thuộc lớp dẫn xuất như là một đối tượng thuộc lớp cơ sở. • Tự động chuyển đổi kiểu
  • 7. 7 Ví dụ public class Test1 { public static void main(String arg[]) { Employee e = new Employee(); Person p; p = e; p.setName(“Hoa”); p.setSalary(350000); // compile error } Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String
  • 8. 8 Ví dụ class Manager extends Employee { Employee assistant; // ... public void setAssistant(Employee e) { assistant = e; } // ... } public class Test2 { public static void main(String arg[]) { Manager junior, senior; // ... senior.setAssistant(junior); } } Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String Manager - assistant: Employee + setAssistant(Employee) + getDetails():String
  • 9. 9 Ví dụ public class Test3 { String static teamInfo(Person p1, Person p2) { return "Leader: " + p1.getName() + ", member: " + p2.getName(); } public static void main(String arg[]) { Employee e1, e2; Manager m1, m2; // ... System.out.println(teamInfo(e1, e2)); System.out.println(teamInfo(m1, m2)); System.out.println(teamInfo(m1, e2)); } } Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String Manager - assistant: Employee + setAssistant(Employee) + getDetails():String
  • 10. 10 • Down casting: đi xuống cây phân cấp thừa kế (move back down the inheritance hierarchy) • Down casting là khả năng nhìn nhận một đối tượng thuộc lớp cơ sở như một đối tượng thuộc lớp dẫn xuất. • Không tự động chuyển đổi kiểu  Phải ép kiểu. Down-casting
  • 11. 11 Ví dụ public class Test2 { public static void main(String arg[]) { Employee e = new Employee(); Person p = e; // up casting Employee ee = (Employee) p; // down casting Manager m = (Manager) ee; // run-time error Person p2 = new Manager(); Employee e2 = (Employee) p2; } } Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String Manager - assistant: Employee + setAssistant(Employee) + getDetails():String
  • 12. Liên kết tĩnh và liên kết động Static binding & dynamic binding 2
  • 13. 13 Liên kết lời gọi hàm • Liên kết lời gọi hàm (function call binding) là quy trình xác định khối mã hàm cần chạy khi một lời gọi hàm được thực hiện • C: đơn giản vì mỗi hàm có duy nhất một tên • C++: chồng hàm, phân tích chữ ký kiểm tra danh sách tham số.
  • 14. 14 Trong ngôn ngữ HĐT • Liên kết lời gọi phương thức • Đối với các lớp độc lập (không thuộc cây thừa kế nào), quy trình này gần như không khác với function call binding − so sánh tên phương thức, danh sách tham số để tìm định nghĩa tương ứng − một trong số các tham số là tham số ẩn: con trỏ this
  • 15. 15 Liên kết tĩnh • Liên kết tại thời điểm biên dịch − Early Binding/Compile-time Binding − Lời gọi phương thức được quyết định khi biên dịch, do đó chỉ có một phiên bản của phương thức được thực hiện − Nếu có lỗi thì sẽ có lỗi biên dịch − Ưu điểm về tốc độ • C/C++ function call binding, và C++ method binding cơ bản đều là ví dụ của liên kết tĩnh (static function call binding)
  • 16. 16 Liên kết động • Lời gọi phương thức được quyết định khi thực hiện (run-time) − Late binding/Run-time binding − Phiên bản của phương thức phù hợp với đối tượng được gọi. − Java mặc định sử dụng liên kết động
  • 17. 17 Ví dụ public class Test { public static void main(String arg[]){ Person p = new Person(); // ... Employee e = new Employee(); // ... Manager m = new Manager(); // ... Person pArr[] = {p, e, m}; for (int i=0; i< pArr.length; i++){ System.out.println( pArr[i].getDetail()); } } } Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String Manager - assistant: Employee + setAssistant(Employee) + getDetails():String
  • 19. 19 • Polymorphism: Nhiều hình thức thực hiện, nhiều kiểu tồn tại • Đa hình trong lập trình − Đa hình phương thức: + Phương thức trùng tên, phân biệt bởi danh sách tham số. − Đa hình đối tượng + Nhìn nhận đối tượng theo nhiều kiểu khác nhau + Các đối tượng khác nhau cùng đáp ứng chung danh sách các thông điệp có giải nghĩa thông điệp theo cách thức khác nhau. Đa hình
  • 20. 20 Ví dụ • Các đối tượng khác nhau giải nghĩa các thông điệp theo các cách thức khác nhau • Liên kết động (Java) Person p1 = new Person(); Person p2 = new Employee(); Person p3 = new Manager(); // ... System.out.println(p1.getDetail()); System.out.println(p2.getDetail()); System.out.println(p3.getDetail()); Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String Manager - assistant: Employee + setAssistant(Employee) + getDetails():String
  • 21. 21 Ví dụ class EmployeeList { Employee list[]; ... public void add(Employee e) {...} public void print() { for (int i=0; i<list.length; i++) { System.out.println(list[i].getDetail()); } } ... EmployeeList list = new EmployeeList(); Employee e1; Manager m1; ... list.add(e1); list.add(m1); list.print(); Person - name: String - birthday: Date + setName(String) + setBirthday(Date) + getDetails(): String Employee - salary: double + setSalary(double) + getDetails(): String Manager - assistant: Employee + setAssistant(Employee) + getDetails():String
  • 22. • Kiểm tra xem một đối tượng có phải là thể hiện của một lớp nào đó không public class Employee extends Person {} public class Student extends Person {} public class Test{ public doSomething(Person e) { if (e instanceof Employee) {... } else if (e instanceof Student) {... } else {... } } } Toán tử instanceof
  • 23. 23 Ví dụ • Các đối tượng Triangle, Rectangle, Circle đều là các đối tượng Shape
  • 24. ... public static void handleShapes(Shape[] shapes){ // Vẽ các hình theo cách riêng của mỗi hình for( int i = 0; i < shapes.length; ++i) { shapes[i].draw(); } ... // Gọi đến phương thức xóa, không cần quan tâm // đó là hình gì for( int i = 0; i < shapes.length; ++i) { shapes[i].erase(); } } ... Ví dụ
  • 25. Tổng kết • Upcasting và downcasting • Nhìn nhận các đối tượng thuộc lớp cơ sở như đối tượng thuộc lớp dẫn xuất (upcasting) và ngược lại (down-casting) • Liên kết tĩnh và liên kết động • Liên kết lời gọi hàm lúc biên dịch (liên kết tĩnh) hay lúc chạy chương trình (liên kết động) • Đa hình • Nhìn nhận một đối tượng dưới nhiều kiểu khác nhau