Giới thiệu về lớp
Bài 3
Bài 03 / 2 of 20
Các nội dung chính
Tìm hiểu về Class
Tạo đối tượng
Giải thích về khái niệm method trong lớp
Cài đặt constructor
Các đặc điểm của kế thừa
Sự khác nhau giữa Overloading và Overriding của
method
Giải thích về access specifiers và method modifiers
Bài 03 / 3 of 20
Class
Một Class sẽ định nghĩa lên một kiểu dữ liệu mới
Mối một thể hiện của lớp sẽ cho một đối tượng mới
Sử dụng toán tử (.) để truy cập đến các properties và
methods của đối tượng
Ví dụ:
Person p = new Person(“Trainner”);
String s = p.Name;
Bài 03 / 4 of 20
Class
Các từ khóa truy cập đến lớp
public: lớp có thể được truy cập từ các gói, các chương
trình khác.
final: lớp sẽ là lớp hằng, ko thể tạo dẫn xuất (lớp vô
sinh).
abstract: lớp trừu tượng, ko có khai báo các phương
thức, thuộc tính trong lớp trừu tượng. Lớp dẫn xuất sẽ
khai báo, cài đặt thuộc tính, method của lớp trừu tượng.
Các method được khai báo trong lớp trừu tượng không
thể là private or static
Bài 03 / 5 of 20
Mô tả một đối tượng
Khi một Class được tạo ra tức là một kiểu dữ liệu mới được
định nghĩa.
Đối tượng là một thể hiện của lớp.
Tạo đối tượng phải qua 2 bước xử lý:
Bước 1: Khai báo biến, một biến không định nghĩa nên
một đối tượng mà nó sử dụng để tham chiếu đến đối
tượng
Bước 2: Tạo đối tượng và gán cho biến (quá trình này
được thực hiện qua toán tử new)
Toán tử new sẽ cấp phát vùng nhớ động cho đối tượng và
trả về tham chiếu đến đối tượng đó.
Tất cả đối tượng phải được cấp phát động.
Bài 03 / 6 of 20
Tạo đối tượng
Tạo đối tượng phải qua 2 bước xử lý:
Bước 1: Person p; //khai báo biến
Bước 2: p = new Person(“Nampt”); //tạo
đối tượng và gán cho biến p.
Tuy nhiên ta có thể gộp 2 bước làm một:
Person p = new Person(“Nampt”);
Bài 03 / 7 of 20
Methods trong Classes
Một method được định nghĩa như một hành động của đối
tượng.
Cú pháp:
access_specifier modifier datatype method_name (parameter_list)
{
//body of method
}
Bài 03 / 8 of 20
Ví dụ về sử dụng method
class Temp
{
static int num = 10;
public static void show()
{
System.out.println(num);
}
public static void main(String [] arg)
{
Temp tobj = new Temp();
tobj.show();
Temp t1Obj = new Temp();
t1Obj.num = 20;
t1Obj.show();
}
}
Output
Bài 03 / 9 of 20
Đặc điểm hướng đối tượng trong
java
Có 3 đặc điểm chung: tính đóng gói (encapsulation), tính
đa hình (polymorphism), tính kế thừa(inheritance).
Tính đóng gói:
cho phép ẩn đi một phần dữ liệu cục bộ của đối tượng,
chỉ cho phép public ra ngoài những gì cần công bố để
trao đổi với đối tượng khác.
Đơn vị đóng gói cơ bản của java là class.
Bài 03 / 10 of 20
Đặc điểm hướng đối tượng trong
java
Tính đa hình
Cho phép một đối tượng có thể có nhiều kiểu khác
nhau.
Một biến có kiểu của lớp cha có thể tham chiếu đến bất
kì một đối tượng nào của lớp con, nhưng ko có chiều
ngược lại.
Tính kế thừa
Một lớp có thể kế thừa tất cả các phương thức, thuộc
tính của một lớp khác.
Sử dụng từ khóa extends để khai báo kế thừa.
Ex: class SinhVien extends Person{ … }
Bài 03 / 11 of 20
Methods trong Classes
Trong method có kiểu dữ liệu trả về không phải là void thì
trong thân method phải có câu lệnh return.
Nhiều method có các tham số
Bài 03 / 12 of 20
Constructors
Constructor là một method đặc biệt để khởi tạo giá trị cho
các properties của đối tượng.
Nó trùng tên với tên lớp và không có kiểu dữ liệu trả về
Nó tự động được gọi ngay sau khi đối tượng được tạo
Có 2 loại constructor:
Constructor có tham số
Constructor không có tham số (default constructor)
Khi định nghĩa một lớp mà ta không định nghĩa
constructor thì nó sẽ có một constructor ngầm định, tuy
nhiên nếu ta định nghĩa một constructor có tham số thì
constructor ngầm định sẽ không có.
Bài 03 / 13 of 20
Kế thừa (Inheritance)
Một lớp được kế thừa từ lớp khác thì được gòi là subclass (lớp
con)
Lớp mà để cho lớp khác kế thừa gọi là superclass (lớp cha)
Subclass có thể truy cập đến tất cả các thuộc tính và phương
thức của superclass.
Để kế thừa một lớp ta sử dụng từ khóa extends
Ví dụ: Lớp Student kế thừa từ lớp Person
Class Student extends Person
{
//định nghĩa các properties và method
}
Bài 03 / 14 of 20
Gọi constructor của lớp cha
Câu lệnh gọi constructor của lớp cha nên được đặt là
câu lệnh đầu tiên trong constructor của lớp con.
Từ khóa super() được sử dụng để gọi tới superclass
constructor.
Bài 03 / 15 of 20
Gọi constructor của lớp cha
Class Person
{ private String name;
public Person(String name)
{ this.name = name; }
}
Class Student
{ private String id;
public Student(String name, String id)
{
super(name);
this.id = id;
}
}
Bài 03 / 16 of 20
Methods Overloading
Đặc điểm của overloaded method:
Được định nghĩa trong cùng một class
Có cùng tên
Danh sách tham số khác nhau
Overloaded methods thể hiện tính đa hình trong quá trình
dịch (compile time)
Bài 03 / 17 of 20
Methods Overloading
Class Person
{ private int x;
public int count() { return x*2; }
public int count(int rate) { return x*rate ; }
}
Bài 03 / 18 of 20
Methods Overriding
Đặc điểm của overridden methods là:
Tồn tại trong lớp cha giống như trong lớp con.
Được định nghĩa lại trong lớp con.
Overridden methods thể hiện tính đa hình trong quá trình
thực thi (runtime)
Bài 03 / 19 of 20
Methods Overriding
Class Person
{ private int x;
public int count() { return x* 2; }
}
Class Account extends Person
{
public int count() { return x*3; }
}
Bài 03 / 20 of 20
Access Specifiers đối với Methods
có thể truy cập được từ bên ngoài
lớp khai báo.
có thể truy cập được từ lớp khai báo và
những lớp dẫn xuất từ nó.
chỉ được truy cập bên trong bản
thân lớp khai báo.
Bài 03 / 21 of 20
Method Modifiers
static: dùng chung cho tất cả các thể hiện của lớp, có nghĩa
là phương thức đó có thể được thực hiện kể cả khi không
có đối tượng của lớp chứa phương thức đó.
final: không được khai báo nạp chồng ở lớp dẫn xuất
abstract: không cần cài đặt, nó sẽ được cài đặt chi tiết trong
lớp dẫn xuất từ nó.
synchronized:dùng để ngăn các tác động của các đối tượng
khác lên đối tượng đang xét trong khi đang đồng bộ hóa.