Tr??c tiên, b?n hãy ??c th?t k? bài này:
L?p trình h??ng ??i t??ng v?i công ngh? Java?
R?i xem video anh Vi?t bên blog StudyAndShare:?
? bài này, mình s? ch? vi?t v? class trong Java và chúng ta b?t ??u th?c hành, làm bài t?p nh? ?? làm quen v?i class.
1. Khái ni?m class (l?p):
Chúng ta có th? xem l?p nh? m?t khuôn m?u (template) c?a ??i t??ng (Object). Trong ?ó bao g?m d? li?u c?a ??i t??ng (fields hay properties) và các ph??ng th?c (methods) tác ??ng lên thành ph?n d? li?u ?ó g?i là các ph??ng th?c c?a l?p.
Các ??i t??ng ???c xây d?ng b?i các l?p nên ???c g?i là các th? hi?n c?a l?p (class instance).
L?p trong java g?n gi?ng nh? b?n ghi trong l?p trình C ho?c pascal, nh?ng t?t nhiên nó cao c?p h?n.
Ví d? 1: Ta khai báo 1 l?p SinhVien g?m các thu?c tính:
- hoTen
- namSinh
- lopHoc.
L?p này chính là 1 khuôn m?u. Khi ta t?o ra các ??i t??ng d?a trên l?p này, các ??i t??ng ??u t??ng t? nh? m?u trên.
Vd :
T?o ??i t??ng a, khi ?ó a s? có 3 thu?c tính, và ta có th? thao tác gán giá tr? các thu?c tính ?ó nh? sau:
- hoTen là "Nguy?n V?n A";
- namSinh là "1992";
- lopHoc là "At7a";
??i t??ng b, c, ... c?ng t??ng t? nh?ng giá tr? c?a chúng s? ??c tr?ng cho t?ng ??i t??ng riêng. Có l?, các b?n s? th?y nó có v? gi?ng v?i các b?n ghi n?u nh? b?n ?ã ???c h?c l?p trình C ho?c Pascal.
2. Khai báo/??nh ngh?a l?p:
PHP:
class <ClassName> {
<ki?u d? li?u> <field_1>;
<ki?u d? li?u> <field_2>;
constructor
method_1
method_2}
- ClassName: là tên chúng ta ??t cho l?p
- field_1, field_2: các thu?c tính, các bi?n, hay các thành ph?n d? li?u c?a l?p.
- constructor: là s? xây d?ng, kh?i t?o ??i t??ng l?p.
- method_1, method_2: là các ph??ng th?c/hàm th? hi?n các thao tác x? lý, tác ??ng lên các thành ph?n d? li?u c?a l?p.
? bài này, t?m th?i chúng ta s? ch?a quan tâm t?i constructor và method nhé, nh?ng bài sau mình s? vi?t rõ v? nh?ng khái ni?m ?ó.
Các b?n hãy xem vd2 code v? l?p ?? ??nh ngh?a nh?ng gì ?ã vi?t trong ví d? 1
Ví d? 2: (? ?ây, t?m th?i ch?a c?n hi?u public là gì nhé, xu?ng ph?n d??i s? nói k? h?n)
PHP:
class SinhVien {
public String hoTen;
public int namSinh;
public String lopHoc;
}
ClassName objectName = new ClassName();
Ví d? 3: T?o 2 ??i t??ng sinh viên a và sinh viên b d?a trên class ?ã ??nh ngh?a ? ví d? 2:
PHP:
SinhVien a = new SinhVien();SinhVien b = new SinhVien();
Vùng d? li?u (fields) hay thu?c tính (properties) c?a l?p ???c khai báo bên trong l?p nh? sau:
PHP:
class <ClassName>{// khai báo nh?ng thu?c tính c?a l?p<ti?n t?> <ki?u d? li?u> field1;//
}
- public: có th? truy xu?t t? t?t c? các ??i t??ng khác
- private: m?t l?p không th? truy xu?t vùng private c?a 1 l?p khác.
- protected: vùng protected c?a 1 l?p ch? cho phép b?n thân l?p ?ó và nh?ng l?p d?n xu?t t? l?p ?ó truy c?p ??n.
Xem thêm video Blog StudyAndShare v? các thu?c tính này:
?
Ví d? 4:
PHP:
class SinhVien{
public String hoTen;
private int namSinh;
protected String lopHoc;
public static String tenTruong = "HV KT M?t Mã";
}
- Thu?c tính "namSinh" ch? có th? truy c?p ???c t? các ??i t??ng có ki?u "SinhVien"(private)
- Thu?c tính "lopHoc", so có th? truy c?p ???c t? các ??i t??ng có ki?u "SinhVien" và các ??i t??ng c?a các l?p con d?n xu?t t? l?p "SinhVien" (protected)
- "tenTruong" là bi?n t?nh có giá tr? là "HV KT M?t Mã"trong t?t c? các th? hi?n t?o ra t? l?p "SinhVien" (public static)
L?u ý: Thông th??ng ?? an toàn cho vùng d? li?u c?a các ??i t??ng ng??i ta tránh dùng ti?n t? public, mà th??ng ch?n ti?n t? private ?? ng?n c?n quy?n truy c?p ??n vùng d? li?u c?a m?t l?p t? các ph??ng th?c bên ngoài l?p ?ó.
V?y class ???c ??nh ngh?a, ???c vi?t ? v? trí nào trong 1 bài l?p trình Java h??ng ??i t??ng. Vi?c t?o ??i t??ng, truy c?p d? li?u c?a các ??i t??ng ???c t?o t?o nh?ng class ?ó ra sao! ? bài sau mình s? vi?t rõ và k? h?n ?? các b?n có cái nhìn c? th?!
K?t thúc bài này, mình s? vi?t 1 ví d? ??n gi?n:
Ví D? 5: T?o class sinh viên g?m các thu?c tính: hoTen, namSinh, lopHoc
T?o 2 ??i t??ng là sinh viên a và sinh viên b. Gán giá tr? cho các thu?c tính và in giá tr? các thu?c tính t?ng sinh viên ra màn hình!
PHP:
package javademoandroidvn;//Vd5class SinhVien {
public String hoTen;
public int namSinh;
&nb
Available link for download