Java Simplified / Session 22 / 1 of 45
Chapter 4
Java Classes & Objects
Nguy n Th Thanh Vân - CNTTễ ị
Java Simplified / Session 22 / 2 of 45
Class
Object
Access Modifier: public, private, protected
Static
Inheritence
Constructor
Overloading và Overriding
this() và super();
Truyền tham số và các lời gọi hàm
Interface
Nội dung
Java Simplified / Session 22 / 3 of 45
Mỗi đối tượng chịu trách nhiệm thực hiện
một tập tác vụ có liên quan với nhau
Đối tượng có thể yêu cầu một đối tượng
khác thực hiện tác vụ.
◦
“If I can’t do it, then I’ll ask somebody who
can.”
Các đối tượng tương tác với nhau bằng
cách gởi thông điệp
Chương trình được tạo thành từ các đối tượng
Java Simplified / Session 22 / 4 of 45
Mẫu (khung thức) mà từ đó các đối
tượng thực sự được tạo ra
Tất cả các đoạn code trong Java đều
nằm bên trong một lớp
Khi ta xây dựng một đối tượng (object)
từ một lớp, có thể nói ta đã tạo một thể
hiện (instance) của lớp
Khái niệm lớp (Class)
Java Simplified / Session 22 / 5 of 45
Class
components
Data members
(Attributes)
Method 1
Method 2
La dơn vị cơ bản trong
lập trình Java.
Classes
Java Simplified / Session 22 / 6 of 45
[<phạm vi hoặc kiểm soát truy nhập>]
class <Tên lớp>
[extends <Tên lớp cha>]
[implements<tên giao diện>]
{ <Các thành phần của lớp>
}
class, extends, implements: từ khóa
Các kiểu lớp trong Java:
◦
Built-in
◦ User-defined
Định nghĩa lớp
Java Simplified / Session 22 / 7 of 45
Một chương trình có thể có
nhiều lớp và các lớp có
thể:
◦
Trong 1 file duy nhất.
◦
Trong nhiều file khác nhau,
và các file này có thể nằm
trong cùng một Package hay
nằm trong nhiều Package
khác nhau
class
class abc {
class cdf {
void method1() {}
void method2() {}
}
class ghk {
}
public static void
main(String[] args) {
}
}
Java Simplified / Session 22 / 8 of 45
Lớp được sử dụng khi chương trình cần một
đối tượng có kiểu của lớp đó.
<tên lớp> <tên đối tượng> = new <tên lớp>();
Ví dụ
Person myClass = new Person();
Sử dụng class
Java Simplified / Session 22 / 9 of 45
Hàm: Hành vi của các đối tượng trong một lớp
Cú pháp định nghĩa:
[<Phạm vi hoặc thuộc tính kiểm soát truy
nhập>]<Kiểu trả về><Tên phương thức>
([<Danh sách tham biến hình thức>])
[<Mệnh đề throws>]
{
<Nội dung pt>
}
Trong đó
◦
<Kiểu trả về> có thể là kiểu nguyên thủy, kiểu lớp hoặc không có giá
trị trả lại (kiểu void)
◦
<Danh sách tham biến hình thức> bao gồm dãy các tham biến (kiểu
và tên) phân cách với nhau bởi dấu phẩy.
Định nghĩa hàm thành phần/p thức
Java Simplified / Session 22 / 10 of 45
The flow of control following method
invocations
Method
Java Simplified / Session 22 / 11 of 45
Ex: Lớp RectangleDemo
•
Để có thể thực thi, chương trình Java phải có một lớp
định nghĩa phương thức main
•
Phương thức main() được gọi bởi JVM để bắt đầu
chương trình.
Java Simplified / Session 22 / 12 of 45
Khái niệm đối tượng
Đối tượng là một thể hiện của một lớp
Mỗi đối tượng có các hành vi được định
nghĩa bởi các phương thức mà ta có thể gọi
◦
Ta có thể làm gì với đối tượng này?
◦
Các phương thức nào ta có thể áp dụng cho nó?
Java Simplified / Session 22 / 13 of 45
Tạo đối tượng
•
Một đối tượng phải được tạo trước khi sử dụng trong
một chương trình
1. Declaration:
Class_name object_name;
3. Instantiation:
Object_name = new class_name();
Java Simplified / Session 22 / 14 of 45
Syntax to access the
data members of a class
outside the class:
object_name.data_member_name
Or
object_name.method_name
Example:
class circle {
int x, y, radius;
void setRadius(int r) {
Radius = r;
}
void display() {
Graphics g = getGraphics();
g.drawOval(x,y,radius,radius);
}
}
….
circle myShape = new circle();
myShape.setRadius(100);
myShape.x=100;
myShape.y=100;
myShape.display();
Accessing data members of a class
Java Simplified / Session 22 / 15 of 45
Chỉ ra mức độ truy xuất được cho phép đối với
các thành phần dữ liệu và các phương thức của
đối tượng
◦
public: có thể được truy cập mọi nơi trong hệ thống và
được thừa kế bởi các lớp con của nó.
◦
private: có thể được truy cập trong chính lớp đó. Không
cho phép kế thừa
◦
protected: có thể được truy cập và thừa kế bởi các lớp
con và có thể truy xuất bởi mã lệnh của cùng gói đó.
◦
Default (không khai báo 3 kiểu trên): chỉ cho phép truy
nhập đối với các lớp trong cùng gói, kể cả các lớp con.
Không cho phép kế thừa.
Access modifer
Java Simplified / Session 22 / 16 of 45
Public-ex
Java Simplified / Session 22 / 17 of 45
Protected-ex
Java Simplified / Session 22 / 18 of 45
Private
Java Simplified / Session 22 / 19 of 45
Default
Java Simplified / Session 22 / 20 of 45
Khi khai báo các thành phần của lớp:
◦ có staitc: những thành phần đó dùng chung cho tất
cả đối tượng trong một lớp
◦ Không có static: thường mỗi biến đều có bản sao
các giá trị riêng của từng đối tượng.
Truy nhập tới các thuộc tính dữ liệu static có thể
thực hiện
◦
Thông qua tên lớp
◦ Thông qua tên đối tượng
Các hàm thành phần static chỉ được phép truy
nhập các tp tĩnh khác, không cho phép truy
nhập tới các tp không khai báo static
Đặc tính Static
Java Simplified / Session 22 / 21 of 45
class varStatic {
int x=2;
static int y=3;
varStatic(){
x++; y++; }
public static void main(String[] args){
varStatic So = new varStatic();
System.out.println(So.x);
System.out.println(So.y);
varStatic So1 = new varStatic();
System.out.println(So1.x);
System.out.println(So1.y);
}
}
Static variable- ex
Biến y dùng chung
Biến x: bản sao
x: không thay đổi
y: thay đổi
Java Simplified / Session 22 / 22 of 45
class methodStatic {
private int x=2;
private static int y=3;
public static void setxy() {
x++; //error
y++; }
public static void main(String[] args){
methodStatic So2 = new methodStatic();
So2.setxy();
System.out.println(So2.x);
System.out.println(So2.y);
}
}
Static method - ex
Cannot make a
static reference
to the non-static
field x
Java Simplified / Session 22 / 23 of 45
Khái niệm
Cú pháp
Truy cập thành phần lớp cha
Toán tử tạo lập
Kế thừa constructor
Chuỗi constructors
Nạp chồng phương thức
Ghi đè phương thức
Toán tử móc xích giữa các lớp kế thừa
Ngăn kế thừa với khai báo final
Thừa kế (Inheritance)
Java Simplified / Session 22 / 24 of 45
Thừa kế (Inheritance)
•
Tạo ra một lớp mới từ lớp có sẵn
•
Sử dụng lại thuộc tính và phương thức
Java Simplified / Session 22 / 25 of 45
Superclass (Base class)
◦
Là lớp mà từ đó lớp con được dẫn xuất
◦
Có thể gọi là lớp cơ sở hoặc lớp cha
Subclass (Derived class)
◦ Là lớp được dẫn xuất từ lớp khác
◦
Có thể gọi là lớp dẫn xuất hoặc lớp con
◦
có thể kế thừa:
các thuộc tính dữ liệu và
hàm tp của lớp cha; - và
có thể bổ sung thêm để xác định thêm t/c, hành vì của những đt cụ
thể hơn.
Inheritance