1, L?nh break:
Trong c?u trúc switch chúng ta dùng câu l?nh break ?? thoát th?i c?u trúc switch trong cùng ch?a nó. T??ng t? nh? v?y, trong c?u trúc l?p, câu l?nh break dùng ?? thoát kh?i c?u trúc l?p trong cùng ch?a nó.
Trong th?c t?, ??c bi?t là các bài tìm ki?m, s? dùng break ?? thoát vòng l?p khi chúng ta ?ã tìm th?y k?t qu?, tránh vi?c l?p t?i t?n cùng c?a vòng l?p, gây lãng phí tài nguyên, vì th? giúp ch??ng trình ch?y nhanh h?n!
Ví d? 1 : Tìm ki?m s? th? t? c?a ph?n t? có giá tr? là 10 trong 1 m?ng các s? nguyên:
PHP:public class JavaDemoAndroidVn {
public static void main(String[] args) {
//Vd1 break
int arrInt[] = {1, 2, 5, 0, 10, 200, 20, 35, 29};
for (int i = 0; i <= 8; i++) {
if (arrInt[i] == 10) {
System.out.println("Tìm th?y s? 10 có th? t? trong m?ng là: " + i);
break;
}
}
}
}
2, L?nh continue:
Hi?u ??n gi?n, chúng ta th??ng dùng continue ?? b? qua vòng l?p hi?n t?i khi g?p ?i?u ki?n nào ?ó ?? ti?p t?c sang vòng l?p ti?p theo! Còn b?n ch?t, vì nó c?ng là 1 l?nh nh?y, nó nh?y xu?ng v? trí k?t thúc ("}") c?a kh?i l?nh trong vòng l?p ch?a nó và b? qua t?t c? các câu l?nh sau nó (Nh?ng câu l?nh thu?c cùng kh?i l?nh v?i continue c?a vòng l?p)
Ví d? 2: Tìm ki?m và in ra s? th? t? và giá tr? các ph?n t? có giá tr? nh? h?n 35 trong m?ng các s? nguyên!
PHP:public class JavaDemoAndroidVn {
public static void main(String[] args) {
//Vd2 continue
int arrInt[] = {1, 2, 5, 0, 10, 200, 20, 35, 29};
System.out.println("Nh?ng s? nh? h?n 35 trong m?ng là: ");
System.out.print("S? th? t?: ");
for (int i = 0; i <= 8; i++) {
if (arrInt[i] >= 35) {
System.out.print(" ");
continue;
}
System.out.print(i + " ");
}
System.out.print(" " + "Giá tr?: ");
for (int i = 0; i <= 8; i++) {
if (arrInt[i] >= 35) {
continue;
}
System.out.print(arrInt[i] + " ");
}
}
}
3, Nhãn (label):
Không gi?ng nh? C/C++, Java không h? tr? l?nh goto ?? nh?y ??n 1 v? trí nào ?ó c?a ch??ng trình. Java dùng k?t h?p nhãn (label) v?i t? khóa break và continue ?? thay th? cho l?nh
goto. Tuy nhiên, ta c?ng ch? có th? s? d?ng label ??i v?i các vòng l?p mà thôi!
PHP:
label:
for (
){
for (
){
if (<bi?u th?c ?i?u ki?n>){
break label;
}
else{
continue label;
}
}
}Xác ??nh v? trí c?a nhãn và xem nh? tên c?a vòng l?p ngoài. N?u <bi?u th?c ?i?u ki?n> ?úng thì l?nh break label s? th?c hi?n vi?c nh?y ra kh?i vòng l?p có nhãn là label, ng??c l?i s? ti?p t?c vòng l?p có nhãn label (khác v?i break và continue thông th??ng ch? thoát kh?i hay ti?p t?c vòng l?p trong cùng ch?a nó).
Ví d? 3: Bài sau ?ây nh?p xu?t ma tr?n, tìm ki?m ch? s? c?a ph?n t? tìm th?y ??u tiên theo yêu c?u!
PHP:Read more »import java.util.Scanner;
public class JavaDemoAndroidVn {
public static void main(String[] args) {
//Vd3 Label
Scanner input = new Scanner(System.in);
int arrInt[][];
arrInt = new int[10][10];
System.out.print("Nhap so hang: ");
int m = input.nextInt();
System.out.print("Nhap so cot: ");
int n =Available link for download
Thursday, January 19, 2017
Bà i 21 Final class abstract class và interface trong Java
Bà i 21 Final class abstract class và interface trong Java
Bài 21: Final class, abstract class và interface trong Java
1, Final class (L?p vô sinh):
L?p không th? có l?p d?n xu?t t? nó (không có l?p con) g?i là l?p vô sinh, hay nói cách khác không th? k? th?a ???c t? m?t l?p vô sinh. L?p vô sinh dùng ?? h?n ch?, ng?n ng?a các l?p khác d?n xu?t t? nó.
?? khai báo m?t l?p là l?p vô sinh, chúng ta dùng t? khóa final class.
T?t c? các ph??ng th?c c?a l?p vô sinh ??u vô sinh, nh?ng các thu?c tính c?a l?p vô sinh thì có th? không vô sinh.
- Xem thêm video blog StudyAndShare
Ví d?:
2, Abstract class (L?p tr?u t??ng):
M?t l?p tr?u t??ng thì không có th? hi?n ngh?a là ta không th? kh?i t?o nó b?ng toán t? new, và m?t ph??ng th?c trong nó là abstract thì ch? ???c ??a ra ??nh ngh?a (khai báo) mà không ???c th?c thi và nó s? ???c override l?i trong các l?p con k? th?a. Và trong l?p mà t?n t?i ph??ng th?c abstract thì l?p ?ó c?ng ???c ??nh ngh?a abstract.
- L?p tr?u t??ng là l?p không có khai báo các thu?c tính thành ph?n và các ph??ng th?c.
- B?t c? class nào k?t th?a abstract class nào ?ó ph?i ??nh ngh?a l?i các abstract mothods c?a l?p mà nó th?a k? ho?c không ??nh ngh?a l?i nh?ng ph?i ghi l?i abstract mothods ?ó.
- Abstract class là class có ch?a các abstract mothods
- Các methods trong abstract class ph?i khai báo v?i t? khóa abstract (không gi?ng nh? interface vì interface m?c ??nh gán abstract cho các mothods)
- M?t abstract class có th? ch?a c? abstract mothods và các mothods th??ng.
- Khi m?t class có ch?a abstract mothod thì b?t bu?c ph?i có t? khóa abstract ??ng tr??c tên class ?ó.
L?u ý:
* Các ph??ng th?c ???c khai báo dùng các ti?n t? private và static thì không ???c khai báo là tr?u t??ng abstract. Ti?n t? private thì không th? truy xu?t t? các l?p d?n xu?t, còn ti?n t? static thì ch? dùng riêng cho l?p khai báo mà thôi.
* Ph??ng th?c trong abstract class có 2 cách ?? khai báo:
- Khai báo bình th??ng nh? class
- Khai báo gi?ng nh? interface nh?ng ph?i có thêm t? khóa abstract
Code demo:
3, Interface (Khác v?i GUI - Nó không ph?i là giao di?n ng??i dùng)
- Nh? chúng ta ?ã bi?t m?t l?p trong java ch? có m?t siêu l?p (super class) tr?c ti?p hay m?t cha duy nh?t (??n th?a k?). ?? tránh ?i tính ph?c t?p c?a ?a th?a k? (multi-inheritance) trong l?p trình h??ng ??i t??ng, Java thay th? b?ng interface. M?t l?p có th? k? th?a t? nhi?u interface v?i các l?p khác ?? th?a h??ng thêm vùng d? li?u và ph??ng th?c c?a các interface này.
- Interface ???c khai báo nh? m?t l?p. Nh?ng các thu?c tính c?a interface là các h?ng (khai báo dùng t? khóa final) và các ph??ng th?c c?a interface là tr?u t??ng (m?c dù không có t?
khóa abstract).
- Mothods tr?u t??ng là các mothods ch? có ph?n header, không có ph?n body.(Xem ví d? phía d??i)
- Trong các l?p có cài ??t các interface ta ph?i ti?n hành cài ??t c? th? các ph??ng th?c này.
- Interface ???c ??nh ngh?a nh?m làm cho code rành m?ch h?n vì các class có th? implements các interface.
Ví d?: Code ví d? c?a video bên blog StudyAndShare
?Có m?t v?n ?? khác v?i l?p là m?t giao di?n (interface) không ch? có m?t giao di?n cha tr?c ti?p mà có th? d?n xu?t cùng lúc nhi?u giao di?n khác (hay có nhi?u giao di?n cha). Khi ?ó nó s? k? th?a t?t c? các giá tr? h?ng và các ph??ng th?c c?a các giao di?n cha. Các giao di?n cha ???c li?t kê thành chu?i và cách nhau b?i d?u ph?y ,. Khai báo nh? sau:
Ví d?:
Read more »
L?p không th? có l?p d?n xu?t t? nó (không có l?p con) g?i là l?p vô sinh, hay nói cách khác không th? k? th?a ???c t? m?t l?p vô sinh. L?p vô sinh dùng ?? h?n ch?, ng?n ng?a các l?p khác d?n xu?t t? nó.
?? khai báo m?t l?p là l?p vô sinh, chúng ta dùng t? khóa final class.
T?t c? các ph??ng th?c c?a l?p vô sinh ??u vô sinh, nh?ng các thu?c tính c?a l?p vô sinh thì có th? không vô sinh.
- Xem thêm video blog StudyAndShare
?
Ví d?:
PHP:
public final class A {
public final int x;
private int y;
public final void method_1(){
//
}
public final void method_2(){
//
}
}M?t l?p tr?u t??ng thì không có th? hi?n ngh?a là ta không th? kh?i t?o nó b?ng toán t? new, và m?t ph??ng th?c trong nó là abstract thì ch? ???c ??a ra ??nh ngh?a (khai báo) mà không ???c th?c thi và nó s? ???c override l?i trong các l?p con k? th?a. Và trong l?p mà t?n t?i ph??ng th?c abstract thì l?p ?ó c?ng ???c ??nh ngh?a abstract.
- L?p tr?u t??ng là l?p không có khai báo các thu?c tính thành ph?n và các ph??ng th?c.
- B?t c? class nào k?t th?a abstract class nào ?ó ph?i ??nh ngh?a l?i các abstract mothods c?a l?p mà nó th?a k? ho?c không ??nh ngh?a l?i nh?ng ph?i ghi l?i abstract mothods ?ó.
- Abstract class là class có ch?a các abstract mothods
- Các methods trong abstract class ph?i khai báo v?i t? khóa abstract (không gi?ng nh? interface vì interface m?c ??nh gán abstract cho các mothods)
- M?t abstract class có th? ch?a c? abstract mothods và các mothods th??ng.
- Khi m?t class có ch?a abstract mothod thì b?t bu?c ph?i có t? khóa abstract ??ng tr??c tên class ?ó.
PHP:
abstract class A{
abstract void method_1();
}
public class B extends A{
@Override
public void method_1(){
// cài ??t chi ti?t cho ph??ng th?c method_1
// trong l?p con B.
//
}
}
public class C extends A{
@Override
public void method_1(){
// cài ??t chi ti?t cho ph??ng th?c method_1
// trong l?p con C.
//
}
}* Các ph??ng th?c ???c khai báo dùng các ti?n t? private và static thì không ???c khai báo là tr?u t??ng abstract. Ti?n t? private thì không th? truy xu?t t? các l?p d?n xu?t, còn ti?n t? static thì ch? dùng riêng cho l?p khai báo mà thôi.
* Ph??ng th?c trong abstract class có 2 cách ?? khai báo:
- Khai báo bình th??ng nh? class
- Khai báo gi?ng nh? interface nh?ng ph?i có thêm t? khóa abstract
Code demo:
PHP:
package java.demo.android.vn;
abstract class nhanSu {
abstract void show();
}
class hocSinh extends nhanSu {
public String hoTen;
public int namSinh;
public void show() {
System.out.println("Hello " + hoTen + " N?m sinh: " + namSinh);
}
}
public class JavaDemoAndroidVn {
public static void main(String[] args) {
hocSinh a = new hocSinh();
a.hoTen = "V? V?n A";
a.namSinh = 1992;
a.show();
}
}- Nh? chúng ta ?ã bi?t m?t l?p trong java ch? có m?t siêu l?p (super class) tr?c ti?p hay m?t cha duy nh?t (??n th?a k?). ?? tránh ?i tính ph?c t?p c?a ?a th?a k? (multi-inheritance) trong l?p trình h??ng ??i t??ng, Java thay th? b?ng interface. M?t l?p có th? k? th?a t? nhi?u interface v?i các l?p khác ?? th?a h??ng thêm vùng d? li?u và ph??ng th?c c?a các interface này.
- Interface ???c khai báo nh? m?t l?p. Nh?ng các thu?c tính c?a interface là các h?ng (khai báo dùng t? khóa final) và các ph??ng th?c c?a interface là tr?u t??ng (m?c dù không có t?
khóa abstract).
- Mothods tr?u t??ng là các mothods ch? có ph?n header, không có ph?n body.(Xem ví d? phía d??i)
- Trong các l?p có cài ??t các interface ta ph?i ti?n hành cài ??t c? th? các ph??ng th?c này.
- Interface ???c ??nh ngh?a nh?m làm cho code rành m?ch h?n vì các class có th? implements các interface.
Ví d?: Code ví d? c?a video bên blog StudyAndShare
?
PHP:
public class DemoJavaBasic {
public static void main(String[] args) {
Manager mana = new Manager();
mana.show();
}
}
interface Human{
public static final int AVG_AGE = 100;
int AVG_WEIGHT = 60;
public abstract void show();
void study();
}
class Manager implements Human{
@Override
public void show() {
System.out.println("Tuoi trung bình: "+ AVG_AGE);
}
@Override
public void study() {
// TODO Auto-generated method stub
}
}PHP:
public interface InterfaceName extends interface1, interface2,interface3{//
}PHP:
interface DienTich {
public abstract void sHinhVuong(float a);
public abstract void sHinhChuNhat(float a, float b);
}
interface ChuVi {
public abstract void cVHinhVuong(floa
Available link for download
Monday, January 9, 2017
Bà i 23 String và má»t sá» phương thức cá»§a lá»p String trong Java
Bà i 23 String và má»t sá» phương thức cá»§a lá»p String trong Java
Bài 23: String và m?t s? ph??ng th?c c?a l?p String trong Java
?
1, Khái ni?m, cách khai báo và kh?i t?o!
a, Khái ni?m:
Chu?i là t?p các kí t? ??ng li?n nhau ???c gi?i h?n trong d?u ngo?c kép nh?: "Hello th? gi?i Java", "Hello Android.Vn - Tôi Yêu các b?n!"
Còn các ký t? các b?n nh? là trong ngo?c ??n c, a, b ...tránh nh?m l?n ch? này!
b, Cách khai báo, kh?i t?o:
Các b?n xem code demo d??i ?ây là hi?u ngay nhé, mình gi?i thi?u 3 cách kh?i t?o ?ng v?i 3 chu?i str1, str2, str3:
PHP:
package javaandroidvn;
public class JavaAndroidVn {
public static void main(String[] args) {
String str1 = new String();
str1 = "Hello Android.Vn";
String str2 = new String ("Xin chào các b?n, tôi ?ang tham gia Android.Vn");
String str3 = "Tôi yêu Android.Vn";
System.out.println(str1+" "+str2+" "+str3);
}
}Code demo: ? ?ây có 2 cách, và mình b? sung thêm ph?n c?ng 2 chu?i - mình c?ng ch?a nói ? nh?ng bài tr??c:
PHP:
package javaandroidvn;
public class JavaAndroidVn {
public static void main(String[] args) {
char ch[] = {A, n, d, r, o, i, d, ., V, n};
String str1 = new String(ch);
System.out.println("str1: " + str1);
String str2 = new String(ch, 2, 5); //L?y t? v? trí s? 2, và l?y 5 ký t? trong m?ng k? t? v? trí ?ó
System.out.println("str2: " + str2);
//C?ng 2 chu?i - ph?n này b? sung thêm
String str3 = str1+ str2;
//String str3 = str1.concat(str2); Cách này c?ng n?i ???c 2 chu?i!
System.out.println("str3: "+str3);
}
}Ph?n 1c, mình ?ã chia s? các ph??ng th?c chuy?n t? m?ng các ký t? sang chu?i, ph?n này s? là ng??c l?i.
Code demo:
PHP:
package javaandroidvn;
public class JavaAndroidVn {
public static void main(String[] args) {
String str = "Android.Vn Android.Vn";
//Chuy?n chu?i thành m?ng ký t?!
System.out.println("Chuy?n chu?i thành m?ng ký t?!");
char arr[] = str.toCharArray();
for (int i = 0; i < str.length(); i++) {
System.out.print(arr[i] + " ");
}
}
}Ph?n này r?t d? hi?u, mình s? gi?i thích luôn các ph??ng th?c trong code demo, ?o?n nào không hi?u các b?n h?i ? phía d??i nhé
**Chú ý: V? trí các ký t? trong chu?i c?ng gi?ng nh? trong m?ng, b?t ??u t? v? trí s? 0 và k?t thúc là (?? dài chu?i - 1).
PHP:
package javaandroidvn;
public class JavaAndroidVn {
public static void main(String[] args) {
String str = "Android.Vn Android.Vn";
System.out.println("str = " + str);
// L?y t? v? trí s? 8 t?i cu?i cùng c?a chu?i
System.out.println("str.substring(8) = " + str.substring(8));
//L?y t? v? trí s? 3 t?i v? trí s? 9
System.out.println("str.substring(3,9) = " + str.substring(3, 9));
//?? dài chu?i:
System.out.println("?? dài chu?i: str.length() = " + str.length());
//L?y ra ký t? trong chu?i theo ch? s?
char ch;
ch = str.charAt(4);
System.out.println("str.charAt(4) = " + ch);
// Thay 1 ký t? b?ng ký t? khác trong chu?i:
System.out.println("Thay t?t c? ký t? n b?ng ký t? x = " + str.replace(n, x));
//Tìm chu?i "And" là chu?i con c?a chu?i str, thay k?t qu? ??u tiên b?ng chu?i "xxx"
System.out.println("Thay And ??u tiên b?ng xxx = " + str.replaceFirst("And", "xxx"));
//Thay toàn b? chu?i "And" c?a chu?i str b?ng chu?i "xxx":
System.out.println("Thay t?t c? And b?ng xxx = " + str.replaceAll("And", "xxx"));
//Chuy?n thành ch? th??ng:
System.out.println("str chuy?n v? vi?t th??ng: " + str.toLowerCase());
//Chuy?n thành ch? hoa:
System.out.println("str chuy?n v? vi?t hoa: " + str.toUpperCase());
//Lo?i b? kho?ng tr?ng 2 bên chu?i
String str1 = " "+str+" ";
System.Available link for downloadThursday, December 29, 2016
Bà i 12 Class lá»p và Äá»i tượng trong Java!
Bà i 12 Class lá»p và Äá»i tượng trong Java!
Bài 12: Class (l?p) và ??i t??ng trong Java!
?? có ki?n th?c t?ng quan và m?t vài khái ni?m m?i trong l?p trình h??ng ??i t??ng
Tr??c tiên, b?n hãy ??c th?t k? bài này:
? 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:
- class: là t? khóa c?a java
- 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)
3. T?o ??i t??ng c?a l?p:
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:
4. Thu?c tính c?a l?p
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:
?? xác ??nh quy?n truy xu?t c?a các ??i t??ng khác ??i v?i vùng d? li?u c?a l?p ng??i ta th??ng dùng 3 ti?n t? sau:
- 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:
- Thu?c tính "hoTen" có th? ???c truy c?p ??n t? t?t c? các ??i t??ng khác. (public)
- 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!
Read more »
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
Subscribe to:
Posts (Atom)