Xem mẫu
- CHƯƠNG III
LỚP VÀ ĐỐI TƯỢNG
TRONG JAVA
- Mục tiêu
• Nắm vững cấu trúc của một lớp.
• Nắm vững các chỉ thị truy cập.
• Giải thích được constructor và destructor.
• Giải thích được khái niệm đối tượng hiện
hành.
• Hiện thực được lớp bằng Java.
Slide 2/81
- Nội dung
• Cấu trúc 1 lớp và access modifiers
• Đối tượng và tham chiếu đối tượng
• Tham chiếu this
• Overloading
• Constructor & destructor
• Thành viên static
• Phân biệt các kiểu dữ liệu cơ bản và đối tượng
•
Slide 3/81
- 3.1- Cấu trúc 1 lớp và access modifiers
• Lớp: Hiện thực chung cho một tập các đối tượng có
cùng đặc điểm và hành vi.
• Một lớp có thể là lớp con của một lớp đã có.
• Hiện thực lớp:
– Khai báo mức cho phép sử dụng.
– Khai báo lớp cha
– Khai báo các thành phần thuộc tính.
– Hiện thực code các hành vi.
• Lớp và mỗi thành phần cần phải chỉ định mức độ cho
phép truy cập (tính bảo mật) access modifier
• Mỗi ngôn ngữ OOP quy định cú pháp riêng cho việc
hiện thực lớp.
Slide 4/81
- class A
Cấu trúc một lớp
là con
Access Modifiers
class B
Các giới hạn truy cập
1. Cho phép truy cập tự do (public)
2. Chỉ cho phép trong cùng một gói
truy cập Field_1
3. Không cho bên ngoài truy cập Field_2
.......
(private). Method_1()
4. Chỉ cho lớp con truy cập Method_2()
(protected). ..........
5. Không cho phép lớp con hiệu
chỉnh (final).
Slide 5/81
- Cú pháp khai báo class trong Java
[Modifier] class CLASSNAME
{
[Modifier] DataType1 Property1 [=Value];
[Modifier] DataType2 Property2 [=Value];
[Modifier] DataType MethodName( DataType Arg,…)
{
}
}
Không có modifier : Mặc định cho phép các đối tượng thuộc các
class cùng package ( cùng thư mục)truy cập
Slide 6/81
- Đặc tính truy xuất
Modifier private “defaul” protected public
Cùng class YES YES YES YES
Cùng gói, khác NO YES YES YES
class
lớp con trong NO YES YES YES
cùng gói với
lớp cha
Khác gói, khác NO NO NO YES
l ớp
Lớp con khác NO NO YES YES
gói với lớp cha
Slide 7/81
- 3.2- Đối tượng và tham chiếu đối
tượng
• Định nghĩa biến
data
đối tượng.
1000
• Biến đối tượng
trong Java là
tham khảo (địa
chỉ) của vùng
nhớ chứa dữ liệu
obj 1000
của đối tượng.
ClassName obj ; obj= new ClassName();
Slide 8/81
- Thí dụ 1
Error
Lớp public thì tên file.java phải trùng với tên lớp
Vì khi bên ngoài truy cập, nhìn tên file là biết tên lớp
Nếu không là lớp public,
tên lớp và tên file có thể khác nhau
Vì lớp này chỉ dùng trong một gói (package)
Slide 9/81
- Thí dụ 2
từ khóa this để
chỉ thị đối
tượng đang
thao tác. Nhờ
đó phân biệt
được tham số
x và thành
phần x
Slide 10/81
- Thí dụ 3
access
modifier là
private mà
trong main
vẫn truy
cập được
vì main
nằm trong
khai báo
lớp
Slide 11/81
- Thí dụ 4
Sửa lại lớp
VONGTRON:
không có main
Xây dựng lớp SDVT sử dụng lớp
VONGTRON để trong cùng thư mục.
Biên dịch có lỗi vì trong lớp SDVT
không thể truy cập private method
của lớp VONGTRON
Slide 12/81
- Thí dụ 5
Lớp SDVT truy cập trực tiếp được thuộc tính x của
vong tròn v vì khai báo thuộc tính này là “defaul” –
không chỉ định modifier.
Hai file này cùng thư mục nên SDVT truy cập được
thuộc tính này.
Slide 13/81
- Thí dụ 6
Trong lớp
VONGTRON,
x,y,r có thuộc tính
protected. Nhưng,
lớp SDVT cùng thư
mục với lớp
VONGTRON nên có
thể truy cập thuộc
tính này.
Slide 14/81
- 3.3- Chỉ thị this
• Khi hiện thực hành vi của 1 lớp. Truy xuất một
thành phần bằng chính tên của thành phần này
hoặc this.tênThànhPhần.
• Khi tham số trùng với tên thuộc tính thì nhờ từ
khóa this chúng ta phân biệt rõ thuộc tính với
tham số.
• Các môi trường lập trình Java hiện nay hầu hết
đều có trợ giúp ngữ cảnh. Do vậy, qua từ khóa
this, người lập trình dễ truy cập 1 thành phần
của lớp.
Slide 15/81
- Thí dụ
Slide 16/81
- Thí dụ
Truy cập thành phần Truy cập thành phần
qua từ khóa this không qua từ khóa this
Slide 17/81
- 3.4- Overloading một hành vi
• Overloading: Kỹ thuật cho phép xây dựng
các hành vi trùng tên nhưng khác chữ ký
(signature) trong cùng một lớp.
• Chữ ký bao gồm:
– Số lượng tham số.
– Thứ tự các kiểu của các tham số.
Slide 18/81
- Thí dụ
3 hành vi cùng
có tên là
setData
Slide 19/81
- 3.5- Hành vi khởi tạo (constructor)
• Hành vi được thực thi ngay vào lúc khởi
tạo đối tượng.
• Một lớp có thể có 0/1/n contructor.
• Cú pháp constructor
[Modifier] ClassName ( Parameters)
{ }
Chú ý:
- Constructor không có kiểu trả trị.
Slide 20/81
nguon tai.lieu . vn