SlideShare a Scribd company logo
1 of 33
Download to read offline
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
Bài 06. Một số kỹ thuật trong kế
thừa
1
IT3100
Mục tiêu bài học
 Trình bày nguyên lý ghi đè 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.
2
Nội dung
1. Ghi đè (Redefine/Overriding)
2. Lớp trừu tượng (Abstract class)
3. Đa kế thừa và Giao diện (Interface)
3
1/ GHI ĐÈ (OVERRIDING)
4
1.1 Khái niệm 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) (Bài 04)
 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)
5
1.1 Khái niệm 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ó
6
7
class Shape {
protected String name;
Shape(String n) { name = n; }
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;
}
}
class 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;
}
}
public class Demo {
public static void main(String[] args) {
Circle c = new Circle("Hinh tron",10);
Square s = new Square("Hinh vuong",15);
System.out.println("Dien tich hinh tron: " + c.calculateArea());
System.out.println("Dien tich hinh vuong: " + s.calculateArea());
}
1.2 this và super
 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
 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
8
Ví dụ
9
package 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;
}
} Gọi lại các phương thức của lớp cha đã bị ghi đè
1.3 Một số quy định khi ghi đè
 Phương thức ghi đè trong lớp con
 Có danh sách tham số giống hệt phương thức kế thừa trong
lớp cha, phải 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
 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
10
Ví dụ
11
class Parent {
public void doSomething() {}
protected int doSomething2() {
return 0;
}
}
class Child extends Parent {
protected void doSomething() {}
protected void doSomething2() {}
}
attempting to use
incompatible return type
attempting to assign
weaker access privileges
private
public
2/ LỚP TRỪU TƯỢNG
12
2.1 Lớp trừu tượng
 Các ngôn ngữ lập trình hướng đối tượng cung cấp các cơ
chế kiểu trừu tượng (abstract type)
 Các kiểu trừu tượng có cài đặt không đầy đủ hoặc không có cài đặt
 Nhiệm vụ chính của chúng là giữ vai trò kiểu tổng quát hơn của
một số các kiểu khác
 Xét ví dụ: lớp Shape
 Là một lớp "không rõ ràng",
khó hình dung ra các đối tượng
cụ thể
• Không thể thể hiện hóa
(instantiate – tạo đối tượng
của lớp) trực tiếp
13
2.1 Lớp trừu tượng
 Không thể thể hiện hóa (instantiate – tạo đối
tượng của lớp) trực tiếp
 Thường lớp trừu tượng được dùng để định
nghĩa các "khái niệm chung", đóng vai trò làm
lớp cơ sở cho các lớp "cụ thể" khác
 Chưa đầy đủ, lớp con kế thừa nó sẽ hoàn thiện
nốt.
 Có thể chứa các phương thức trừu tượng (abstract
method): chỉ có chữ ký mà không có cài đặt cụ thể
 Lớp con khi kế thừa phải cài đặt cụ thể cho các phương
thức trừu tượng của lớp cha
 Phương thức trừu tượng không thể khai báo là final hoặc
static.
14
2.2. Cú pháp
abstract class lớp_Cha {
public abstract kieu ten_PT_TT();
...
}
 Nếu một lớp có một hay nhiều phương thức trừu tượng
thì nó phải là lớp trừu tượng
 Lớp con bắt buộc phải ghi đè tất cả các phương thức trừu
tượng của lớp cha
 Nếu không ghi đè các phương thức này thì lớp con cũng
trở thành một lớp trừu tượng => Phương thức trừu tượng
không thể khai báo là final hoặc static
15
Kết hợp cho phép
abstract public
abstract protected
Kết hợp KHÔNG cho phép
abstract private
abstract static
abstract final
Ví dụ
16
abstract class Shape {
protected String name;
Shape(String n) { name = n; }
public String getName() { return name; }
public abstract float calculateArea();
}
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;
}
}
Shape = new Shape(); //Compile error
3/ ĐA KẾT THỪA VÀ GIAO DIỆN
17
3.1. Đa kế thừa
 Đơn kế thừa (Single Inheritance)
 Một lớp chỉ được kế thừa từ một lớp khác
 Đa kế thừa (Multiple Inheritance)
 Một lớp có thể kế thừa nhiều lớp khác
18
A B C
D
3.2. Vấn đề trong Đa kết thừa
 Xung đột tên
 Thừa kế bị lặp (diamond problem)
19
Bird
Animal
+ color
+ getColor ()
FlyingThing
+ color
+ getColor ()
SomeClass
Bird
Animal
+ color
+ getColor ()
FlyingThing
+ color
+ getColor ()
!
Java chỉ hỗ trợ đơn kế thừa
=> Đưa thêm khái niệm Giao diện (Interface)
3.3 Giao diện (Interface)
 Interface: đặc tả cho các cách cài đặt/triển khai.
 Interface định nghĩa một "kiểu" chỉ chứa định
nghĩa hằng và phương thức trừu tượng
 Không thể thể hiện hóa (instantiate) trực tiếp
 Interface không cài đặt bất cứ một phương thức
nào nhưng để lại cấu trúc thiết kế trên bất cứ
lớp nào sử dụng nó
 Dùng để cho phép một lớp có thể “kế thừa” (triển
khai, thực thi) nhiều cấu trúc một lúc
 Interface có thể kế thừa từ nhiều interface khác
20
3.3 Giao diện (2)
 Cú pháp giao diện
 Sử dụng từ khóa interface để định nghĩa
 Chỉ được bao gồm:
• Chữ ký các phương thức (method signature)
• Các thuộc tính khai báo hằng (static & final)
 Lớp thực thi giao diện
 Hoặc là lớp trừu tượng (abstract class)
 Hoặc là bắt buộc phải cài đặt chi tiết toàn bộ các phương
thức trong giao diện nếu là lớp thực.
21
Mở rộng
 Khái niệm giao diện trong các phiên bản của Java
22
• Chữ ký các phương
thức (method
signature)
• Các thuộc tính khai báo
hằng (static & final)
• Chữ ký các phương
thức (method
signature)
• Các thuộc tính khai báo
hằng (static & final)
• Phương thức mặc định
(default method)
• Phương thức tĩnh
(Static method)
• Chữ ký các phương
thức (method
signature)
• Các thuộc tính khai báo
hằng (static & final)
• Phương thức mặc định
(default method)
• Phương thức tĩnh
(Static method)
• Private methods
JAVA 7 JAVA 8 JAVA 9
3.4. Thực thi giao diện
 Cú pháp thực thi trên Java:
 <Lớp con> [extends <Lớp cha>] implements <Danh sách
giao diện>
 <Giao diện con> extends <Giao diện cha>
 Ví dụ:
public interface DoiXung {…}
public interface DiChuyen {…}
public class HinhVuong extends TuGiac
implements DoiXung, DiChuyen {
...
}
23
Kế thừa trước rồi mở rộng !
3.4. Thực thi giao diện
 Nếu GD có các thuộc tính thì chúng đều là public
static final.
 Các phương thức của GD đều là trừu tượng, nghĩa là
không có thân hàm, và đều có modifier là public
abstract.
 Interface không có Constructor.
24
Ví dụ
25
Circle
-radius: float
+calculateArea():float
+draw(Graphics)
+erase(Graphics)
Action
#x: int
#y: int
+draw(Graphics)
+moveTo(Graphics,int
, int)
+erase(Graphics)
Shape
#name: String
+getName():String
+calculateArea():float
NO !
Circle
-radius:float
+calculateArea():float
+draw(Graphics)
+moveTo(Graphics,int,int)
+erase(Graphics)
<<interface>>
Actable
+draw(Graphics)
+moveTo(Graphics,int, int)
+erase(Graphics)
Shape
#name: String #x:int #y:int
+getName():String
+calculateArea():float
Ví dụ - Code
26
import java.awt.Graphics;
abstract class Shape {
protected String name;
protected int x, y;
Shape(String n, int x, int y) {
name = n; this.x = x; this.y = y;
}
public String getName() {
return name;
}
public abstract float calculateArea();
}
interface Actable {
public void draw(Graphics g);
public void moveTo(Graphics g, int x1, int y1);
public void erase(Graphics g);
}
27
class Circle extends Shape implements Actable {
private int radius;
public Circle(String n, int x, int y, int r){
super(n, x, y); radius = r;
}
public float calculateArea() {
float area = (float) (3.14 * radius * radius);
return area;
}
public void draw(Graphics g) {
System out println("Draw circle at ("
+ x + “," + y + ")");
g.drawOval(x-radius,y-radius,2*radius,2*radius);
}
public void moveTo(Graphics g, int x1, int y1){
erase(g); x = x1; y = y1; draw(g);
}
public void erase(Graphics g) {
System out println(“Erase circle at ("
+ x + “," + y + ")");
// paint the region with background color...
}
}
3.4 Lớp trừu tượng vs. Giao diện
Lớp trừu trượng
 Có thể có các phương thức
abstract, có thể chứa các
phương thức thực
 Có thể chứa các phương
thức protected và static
 Có thể chứa các thuộc tính
final và non-final
 Một lớp chỉ có thể kế thừa
một lớp trừu tượng
Giao diện
 Chỉ có thể chứa chữ ký
phương thức (danh sách các
phương thức)
 Chỉ có thể chứa các phương
thức public mà không có mã
nguồn
 Chỉ có thể chứa các thuộc
tính hằng
 Một lớp có thể thực thi (kế
thừa) nhiều giao diện
28
3.4 Lớp trừu tượng vs. Giao diện
Lớp trừu trượng
 Có thể chứa PT không trừu
tượng, với cài đặt mặc định cho
các lớp con kế thừa
 Có thể thêm PT không trừu
tượng vào lớp mà không yêu
cầu thay đổi các lớp con kế
thừa
Giao diện
 Nếu Giao diện chứa nhiều
phương thức, phải cài đặt lại PT
ở tất cả các lớp thực thi GD
 Nếu thêm một PT vào trong GD,
phải cài đặt lại tất cả các lớp
thực thi GD đó
 GD không đáp ứng được tính
tái sử dụng mã nguồn
29
Tổng kết
 Ghi đè
 Các phương thức ở lớp con có cùng chữ ký và danh sách
tham số với phương thức ở lớp cha, được tạo ra để định
nghĩa lại các hành vi ở lớp con
 Lớp trừu tượng
 Các lớp không được khởi tạo đối tượng, được tạo ra làm lớp
cơ sở cho các lớp con định nghĩa rõ hơn
 Có ít nhất một phương thức trừu tượng
 Giao diện
 Định nghĩa các phương thức mà lớp thực thi phải cài đặt
 Giải quyết vấn đề đa kế thừa
30
Tổng kết
 Khi nào nên cho một lớp là lớp độc lập, lớp con,
lớp trừu tượng, hay nên biến nó thành interface?
 Một lớp nên là lớp độc lập, nghĩa là nó không thừa kế lớp
nào (ngoại trừ Object) nếu nó không thỏa mãn quan hệ IS-A
đối với bất cứ loại nào khác
 Một lớp nên là lớp con nếu cần cho nó làm một phiên bản
chuyên biệt hơn của một lớp khác và cần ghi đè hành vi có
sẵn hoặc bổ sung hành vi mới
 Một lớp nên là lớp cha nếu muốn định nghĩa một khuôn
mẫu cho một nhóm các lớp con, và có mã cài đặt mà tất cả
các lớp con kia có thể sử dụng
• Cho lớp đó làm lớp trừu tượng nếu muốn đảm bảo rằng không ai
được tạo đối tượng thuộc lớp đó
 Dùng một interface nếu muốn định nghĩa một vai trò mà các
lớp khác có thể nhận, bất kể các lớp đó thuộc cây thừa kế
nào
31
Bài tập
 Bài 1: Sửa lại lớp NhanVien:
 Viết mã nguồn của lớp
TruongPhong như hình vẽ biết
Lương của trưởng phòng = Lương
Cơ bản * hệ số lương + phụ cấp
32
NhanVien
# tenNhanVien: String
# luongCoBan: double
# heSoLuong: double
+ LUONG_MAX: double
+ tangHeSoLuong(double):
boolean
+ tinhLuong(): double
+ inTTin()
TruongPhong
- phuCap: double
- soNamDuongChuc: int
+ tinhLuong(): double
+ inTTin()
Bài tập
 Bài 2: Triển khai xây dựng các lớp, giao diện
theo mô tả UML sau (nội dung các PT là in ra 1 dòng chữ
chỉ tên PT)
33
Cat
#name: String
+getName()
+back(Graphics,int, int)
+getVelocity(Graphics)
+ eat()
+ drink()
<<interface>>
CanMove
+run()
+back(Graphics,int, int)
+getVelocity(Graphics)
<<interface>>
CanDrink
+drink()
<<interface>>
CanEat
+eat()
Animal
#name: String
+run()

More Related Content

What's hot

Bai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaileBai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaileNhuận Lê Văn
 
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )Đông Lương
 
[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
 
Ky thuat l.trinh_java
Ky thuat l.trinh_javaKy thuat l.trinh_java
Ky thuat l.trinh_javaLam Man
 
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
 
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
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcmHong Phuoc Nguyen
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngNguyễn Quang Thiện
 
Hdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vbHdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vbDũng Đinh
 
Oop unit 07 các kỹ thuật kế thừa
Oop unit 07 các kỹ thuật kế thừaOop unit 07 các kỹ thuật kế thừa
Oop unit 07 các kỹ thuật kế thừaTráng Hà Viết
 
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
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituongMinh Ngoc Tran
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpTráng Hà Viết
 

What's hot (20)

Bai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaileBai09 ngoai levaxulyngoaile
Bai09 ngoai levaxulyngoaile
 
Bai08 10 java_fx
Bai08 10 java_fxBai08 10 java_fx
Bai08 10 java_fx
 
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
 
Java Tieng Viet
Java Tieng VietJava Tieng Viet
Java Tieng Viet
 
[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
 
Ky thuat l.trinh_java
Ky thuat l.trinh_javaKy thuat l.trinh_java
Ky thuat l.trinh_java
 
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
 
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
 
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
 
[Cntt] all java
[Cntt] all java[Cntt] all java
[Cntt] all java
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcm
 
Oop 2
Oop 2Oop 2
Oop 2
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối Tượng
 
Oop 0
Oop 0Oop 0
Oop 0
 
On thitotnghiep
On thitotnghiepOn thitotnghiep
On thitotnghiep
 
Hdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vbHdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vb
 
Oop unit 07 các kỹ thuật kế thừa
Oop unit 07 các kỹ thuật kế thừaOop unit 07 các kỹ thuật kế thừa
Oop unit 07 các kỹ thuật kế thừa
 
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
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớp
 

Similar to Bai06 mot sokythuattrongkethua

Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thuaTuan Do
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09xcode_esvn
 
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...MasterCode.vn
 
Pdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnPdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnMasterCode.vn
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator OverloadDarian Pruitt
 
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
 
K33103350 tran doankimnhu_bai17_tin11
K33103350 tran doankimnhu_bai17_tin11K33103350 tran doankimnhu_bai17_tin11
K33103350 tran doankimnhu_bai17_tin11Tin5VungTau
 
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
 
C7 class relationship
C7 class relationshipC7 class relationship
C7 class relationshipHồ Lợi
 

Similar to Bai06 mot sokythuattrongkethua (20)

Chuong 3
Chuong 3Chuong 3
Chuong 3
 
Chuong8 (2)
Chuong8 (2)Chuong8 (2)
Chuong8 (2)
 
Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thua
 
Chuong 5
Chuong 5Chuong 5
Chuong 5
 
Chuong3 c
Chuong3 c Chuong3 c
Chuong3 c
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
 
Oop 8
Oop 8Oop 8
Oop 8
 
C9 templates
C9 templatesC9 templates
C9 templates
 
C9 templates
C9 templatesC9 templates
C9 templates
 
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trìn...
 
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#
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator Overload
 
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
 
K33103350 tran doankimnhu_bai17_tin11
K33103350 tran doankimnhu_bai17_tin11K33103350 tran doankimnhu_bai17_tin11
K33103350 tran doankimnhu_bai17_tin11
 
Oop 4
Oop 4Oop 4
Oop 4
 
Chuong 6
Chuong 6Chuong 6
Chuong 6
 
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
 
C7 class relationship
C7 class relationshipC7 class relationship
C7 class relationship
 
C7 class relationship
C7 class relationshipC7 class relationship
C7 class relationship
 

Recently uploaded

BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ 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
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHTư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHThaoPhuong154017
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa2353020138
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Học viện Kstudy
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếngTonH1
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếngTonH1
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
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
 
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
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 

Recently uploaded (20)

BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXHTư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
Tư tưởng Hồ Chí Minh về độc lập dân tộc và CNXH
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tế
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
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...
 
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...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 

Bai06 mot sokythuattrongkethua

  • 1. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 06. Một số kỹ thuật trong kế thừa 1 IT3100
  • 2. Mục tiêu bài học  Trình bày nguyên lý ghi đè 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. 2
  • 3. Nội dung 1. Ghi đè (Redefine/Overriding) 2. Lớp trừu tượng (Abstract class) 3. Đa kế thừa và Giao diện (Interface) 3
  • 4. 1/ GHI ĐÈ (OVERRIDING) 4
  • 5. 1.1 Khái niệm 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) (Bài 04)  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) 5
  • 6. 1.1 Khái niệm 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ó 6
  • 7. 7 class Shape { protected String name; Shape(String n) { name = n; } 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; } } class 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; } } public class Demo { public static void main(String[] args) { Circle c = new Circle("Hinh tron",10); Square s = new Square("Hinh vuong",15); System.out.println("Dien tich hinh tron: " + c.calculateArea()); System.out.println("Dien tich hinh vuong: " + s.calculateArea()); }
  • 8. 1.2 this và super  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  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 8
  • 9. Ví dụ 9 package 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; } } Gọi lại các phương thức của lớp cha đã bị ghi đè
  • 10. 1.3 Một số quy định khi ghi đè  Phương thức ghi đè trong lớp con  Có danh sách tham số giống hệt phương thức kế thừa trong lớp cha, phải 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  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 10
  • 11. Ví dụ 11 class Parent { public void doSomething() {} protected int doSomething2() { return 0; } } class Child extends Parent { protected void doSomething() {} protected void doSomething2() {} } attempting to use incompatible return type attempting to assign weaker access privileges private public
  • 12. 2/ LỚP TRỪU TƯỢNG 12
  • 13. 2.1 Lớp trừu tượng  Các ngôn ngữ lập trình hướng đối tượng cung cấp các cơ chế kiểu trừu tượng (abstract type)  Các kiểu trừu tượng có cài đặt không đầy đủ hoặc không có cài đặt  Nhiệm vụ chính của chúng là giữ vai trò kiểu tổng quát hơn của một số các kiểu khác  Xét ví dụ: lớp Shape  Là một lớp "không rõ ràng", khó hình dung ra các đối tượng cụ thể • Không thể thể hiện hóa (instantiate – tạo đối tượng của lớp) trực tiếp 13
  • 14. 2.1 Lớp trừu tượng  Không thể thể hiện hóa (instantiate – tạo đối tượng của lớp) trực tiếp  Thường lớp trừu tượng được dùng để định nghĩa các "khái niệm chung", đóng vai trò làm lớp cơ sở cho các lớp "cụ thể" khác  Chưa đầy đủ, lớp con kế thừa nó sẽ hoàn thiện nốt.  Có thể chứa các phương thức trừu tượng (abstract method): chỉ có chữ ký mà không có cài đặt cụ thể  Lớp con khi kế thừa phải cài đặt cụ thể cho các phương thức trừu tượng của lớp cha  Phương thức trừu tượng không thể khai báo là final hoặc static. 14
  • 15. 2.2. Cú pháp abstract class lớp_Cha { public abstract kieu ten_PT_TT(); ... }  Nếu một lớp có một hay nhiều phương thức trừu tượng thì nó phải là lớp trừu tượng  Lớp con bắt buộc phải ghi đè tất cả các phương thức trừu tượng của lớp cha  Nếu không ghi đè các phương thức này thì lớp con cũng trở thành một lớp trừu tượng => Phương thức trừu tượng không thể khai báo là final hoặc static 15 Kết hợp cho phép abstract public abstract protected Kết hợp KHÔNG cho phép abstract private abstract static abstract final
  • 16. Ví dụ 16 abstract class Shape { protected String name; Shape(String n) { name = n; } public String getName() { return name; } public abstract float calculateArea(); } 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; } } Shape = new Shape(); //Compile error
  • 17. 3/ ĐA KẾT THỪA VÀ GIAO DIỆN 17
  • 18. 3.1. Đa kế thừa  Đơn kế thừa (Single Inheritance)  Một lớp chỉ được kế thừa từ một lớp khác  Đa kế thừa (Multiple Inheritance)  Một lớp có thể kế thừa nhiều lớp khác 18 A B C D
  • 19. 3.2. Vấn đề trong Đa kết thừa  Xung đột tên  Thừa kế bị lặp (diamond problem) 19 Bird Animal + color + getColor () FlyingThing + color + getColor () SomeClass Bird Animal + color + getColor () FlyingThing + color + getColor () ! Java chỉ hỗ trợ đơn kế thừa => Đưa thêm khái niệm Giao diện (Interface)
  • 20. 3.3 Giao diện (Interface)  Interface: đặc tả cho các cách cài đặt/triển khai.  Interface định nghĩa một "kiểu" chỉ chứa định nghĩa hằng và phương thức trừu tượng  Không thể thể hiện hóa (instantiate) trực tiếp  Interface không cài đặt bất cứ một phương thức nào nhưng để lại cấu trúc thiết kế trên bất cứ lớp nào sử dụng nó  Dùng để cho phép một lớp có thể “kế thừa” (triển khai, thực thi) nhiều cấu trúc một lúc  Interface có thể kế thừa từ nhiều interface khác 20
  • 21. 3.3 Giao diện (2)  Cú pháp giao diện  Sử dụng từ khóa interface để định nghĩa  Chỉ được bao gồm: • Chữ ký các phương thức (method signature) • Các thuộc tính khai báo hằng (static & final)  Lớp thực thi giao diện  Hoặc là lớp trừu tượng (abstract class)  Hoặc là bắt buộc phải cài đặt chi tiết toàn bộ các phương thức trong giao diện nếu là lớp thực. 21
  • 22. Mở rộng  Khái niệm giao diện trong các phiên bản của Java 22 • Chữ ký các phương thức (method signature) • Các thuộc tính khai báo hằng (static & final) • Chữ ký các phương thức (method signature) • Các thuộc tính khai báo hằng (static & final) • Phương thức mặc định (default method) • Phương thức tĩnh (Static method) • Chữ ký các phương thức (method signature) • Các thuộc tính khai báo hằng (static & final) • Phương thức mặc định (default method) • Phương thức tĩnh (Static method) • Private methods JAVA 7 JAVA 8 JAVA 9
  • 23. 3.4. Thực thi giao diện  Cú pháp thực thi trên Java:  <Lớp con> [extends <Lớp cha>] implements <Danh sách giao diện>  <Giao diện con> extends <Giao diện cha>  Ví dụ: public interface DoiXung {…} public interface DiChuyen {…} public class HinhVuong extends TuGiac implements DoiXung, DiChuyen { ... } 23 Kế thừa trước rồi mở rộng !
  • 24. 3.4. Thực thi giao diện  Nếu GD có các thuộc tính thì chúng đều là public static final.  Các phương thức của GD đều là trừu tượng, nghĩa là không có thân hàm, và đều có modifier là public abstract.  Interface không có Constructor. 24
  • 25. Ví dụ 25 Circle -radius: float +calculateArea():float +draw(Graphics) +erase(Graphics) Action #x: int #y: int +draw(Graphics) +moveTo(Graphics,int , int) +erase(Graphics) Shape #name: String +getName():String +calculateArea():float NO ! Circle -radius:float +calculateArea():float +draw(Graphics) +moveTo(Graphics,int,int) +erase(Graphics) <<interface>> Actable +draw(Graphics) +moveTo(Graphics,int, int) +erase(Graphics) Shape #name: String #x:int #y:int +getName():String +calculateArea():float
  • 26. Ví dụ - Code 26 import java.awt.Graphics; abstract class Shape { protected String name; protected int x, y; Shape(String n, int x, int y) { name = n; this.x = x; this.y = y; } public String getName() { return name; } public abstract float calculateArea(); } interface Actable { public void draw(Graphics g); public void moveTo(Graphics g, int x1, int y1); public void erase(Graphics g); }
  • 27. 27 class Circle extends Shape implements Actable { private int radius; public Circle(String n, int x, int y, int r){ super(n, x, y); radius = r; } public float calculateArea() { float area = (float) (3.14 * radius * radius); return area; } public void draw(Graphics g) { System out println("Draw circle at (" + x + “," + y + ")"); g.drawOval(x-radius,y-radius,2*radius,2*radius); } public void moveTo(Graphics g, int x1, int y1){ erase(g); x = x1; y = y1; draw(g); } public void erase(Graphics g) { System out println(“Erase circle at (" + x + “," + y + ")"); // paint the region with background color... } }
  • 28. 3.4 Lớp trừu tượng vs. Giao diện Lớp trừu trượng  Có thể có các phương thức abstract, có thể chứa các phương thức thực  Có thể chứa các phương thức protected và static  Có thể chứa các thuộc tính final và non-final  Một lớp chỉ có thể kế thừa một lớp trừu tượng Giao diện  Chỉ có thể chứa chữ ký phương thức (danh sách các phương thức)  Chỉ có thể chứa các phương thức public mà không có mã nguồn  Chỉ có thể chứa các thuộc tính hằng  Một lớp có thể thực thi (kế thừa) nhiều giao diện 28
  • 29. 3.4 Lớp trừu tượng vs. Giao diện Lớp trừu trượng  Có thể chứa PT không trừu tượng, với cài đặt mặc định cho các lớp con kế thừa  Có thể thêm PT không trừu tượng vào lớp mà không yêu cầu thay đổi các lớp con kế thừa Giao diện  Nếu Giao diện chứa nhiều phương thức, phải cài đặt lại PT ở tất cả các lớp thực thi GD  Nếu thêm một PT vào trong GD, phải cài đặt lại tất cả các lớp thực thi GD đó  GD không đáp ứng được tính tái sử dụng mã nguồn 29
  • 30. Tổng kết  Ghi đè  Các phương thức ở lớp con có cùng chữ ký và danh sách tham số với phương thức ở lớp cha, được tạo ra để định nghĩa lại các hành vi ở lớp con  Lớp trừu tượng  Các lớp không được khởi tạo đối tượng, được tạo ra làm lớp cơ sở cho các lớp con định nghĩa rõ hơn  Có ít nhất một phương thức trừu tượng  Giao diện  Định nghĩa các phương thức mà lớp thực thi phải cài đặt  Giải quyết vấn đề đa kế thừa 30
  • 31. Tổng kết  Khi nào nên cho một lớp là lớp độc lập, lớp con, lớp trừu tượng, hay nên biến nó thành interface?  Một lớp nên là lớp độc lập, nghĩa là nó không thừa kế lớp nào (ngoại trừ Object) nếu nó không thỏa mãn quan hệ IS-A đối với bất cứ loại nào khác  Một lớp nên là lớp con nếu cần cho nó làm một phiên bản chuyên biệt hơn của một lớp khác và cần ghi đè hành vi có sẵn hoặc bổ sung hành vi mới  Một lớp nên là lớp cha nếu muốn định nghĩa một khuôn mẫu cho một nhóm các lớp con, và có mã cài đặt mà tất cả các lớp con kia có thể sử dụng • Cho lớp đó làm lớp trừu tượng nếu muốn đảm bảo rằng không ai được tạo đối tượng thuộc lớp đó  Dùng một interface nếu muốn định nghĩa một vai trò mà các lớp khác có thể nhận, bất kể các lớp đó thuộc cây thừa kế nào 31
  • 32. Bài tập  Bài 1: Sửa lại lớp NhanVien:  Viết mã nguồn của lớp TruongPhong như hình vẽ biết Lương của trưởng phòng = Lương Cơ bản * hệ số lương + phụ cấp 32 NhanVien # tenNhanVien: String # luongCoBan: double # heSoLuong: double + LUONG_MAX: double + tangHeSoLuong(double): boolean + tinhLuong(): double + inTTin() TruongPhong - phuCap: double - soNamDuongChuc: int + tinhLuong(): double + inTTin()
  • 33. Bài tập  Bài 2: Triển khai xây dựng các lớp, giao diện theo mô tả UML sau (nội dung các PT là in ra 1 dòng chữ chỉ tên PT) 33 Cat #name: String +getName() +back(Graphics,int, int) +getVelocity(Graphics) + eat() + drink() <<interface>> CanMove +run() +back(Graphics,int, int) +getVelocity(Graphics) <<interface>> CanDrink +drink() <<interface>> CanEat +eat() Animal #name: String +run()