Professional Documents
Culture Documents
Lap Trinh Huong Doi Tuong Trong Java
Lap Trinh Huong Doi Tuong Trong Java
Mc tiu bi hc
Kt thc bi hc ny, hc vin c th:
Tm hiu cc thc th trong th gii thc nh l cc i tng
nh ngha mt i tng phn mm
Tm hiu v gii thch cu trc ca mt lp
So snh cc lp v cc i tng
Tm hiu tm quan trng ca Java
Tm hiu b JDK v cc cng c ca n
Tm hiu v my o Java - Java Virtual Machine (JVM)
1.1
AptechVietnam
1/114
2/114
AptechVietnam
3/114
Object
(i tng)
Cat
Dog
Honda City
Benz
4/114
AptechVietnam
5/114
6/114
AptechVietnam
Mnh m
An ton (Secure)
7/114
Phn tn (Distributed)
a lung (Multithreaded)
ng (Dynamic)
8/114
AptechVietnam
Kh chuyn (Portable)
Trnh bin dch dch m ngun Java thnh tp tin class. Trnh bin dch javac
c dng bin dch cc tp tin m ngun Java thnh bytecode. M ngun
Java c th c to ra bng bt k trnh son tho vn bn no, chng hn
Notepad
C php:
Javac [option] source
9/114
Trong ,
source
option
V d,
Javac FirstProgram.java
Cu lnh ny s to ra mt tp tin c tn FirstProgram.class. Tp tin class ny
s chy trn my o Java (JVM). Mt vi tu chn ca cu lnh javac c m
t trong bng 1.3
Ty chn
(Option)
M t
-classpath
-d
-g
-verbose
-version
-sourcepath
Cho bit v tr lp
-help
AptechVietnam
arguments
V d,
Java FirstProgram
Mt vi tu chn ca cu lnh Java c m t trong bng 1.4
Ty chn
-classpath
M t
Xc nh r v tr cha cc lp cn (c lu
trong bin mi trng CLASSPATH)
verbose
-version
-jar
-help
-X
-v hoc
11/114
AptechVietnam
13/114
Tm Tt Bi Hc
Mt i tng l mt th hin ca mt lp.
Mt lp nh ngha mt thc th trn gii hn ca cc tnh cht v hnh
ng ph bin.
Mt lp nh ngha mt thc th, trong khi mt i tng l mt thc
th thc s.
Java l mt ngn ng thng dch v bin dch.
Cc tnh nng ca Java:
o Hng i tng
o c lp nn tng
o Mnh m
o An ton
o Phn tn
o a lung
o ng
o Kin trc trung lp
o Kh chuyn
o Hiu sut cao
Sun Microsystems gii thiu ngn ng Java nh l mt sn phm di
tn gi Java Development Kit (JDK)
Bn trong my o, Java to ra mt h thng thi gian thc gip thc thi
m lnh nh sau:
o Np cc files .class
o Qun l b nh
o Thc thi vic thu gom rc
14/114
AptechVietnam
t
Chng 2: Bin v ton t
Mc tiu bi hc
Kt thc bi hc ny, hc vin c th:
C php khai bo bin
nh ngha cc kiu d liu c bn
Tm hiu v gii thch cu trc ca mt lp
M t cc kiu nh dng
M t cc k t c bit (escape sequences)
Xc nh cc ton t khc nhau
2.1 Bin
Bin l n v lu tr c bn trong chng trnh Java. Bin l cc thnh phn
xc nh d liu v c dng tham chiu n cc gi tr xc nh c to
ra trong chng trnh. t tn cc bin c ngha gip ta d dng c hiu m
ngun hn.
2.1.1 Khai bo bin
Tt c cc bin phi c khai bo trc khi s dng. Dng khai bo bin c
bn l:
datatype variablename;
Trong ,
datatype
variablename
- Kiu d liu hp l
- Tn bin hp l
AptechVietnam
15/114
16/114
AptechVietnam
Thnh phn s, v d 0, 1, 2, , 9
Kiu hu t D, d, F hoc f
17/114
18/114
AptechVietnam
19/114
20/114
AptechVietnam
21/114
Kt qu ca on m trn l:
The sum of 5 and 10 is 15.
The sum of 5, 10, and 2 is 17.
Bin sum c nh dng hai ln: ln u trong lnh print; ln th hai bng m
chuyn c t ng to ra bi trnh bin dch Java v s dng phng thc
toString. Trong trng hp ny, bt k gi tr no cng c th c nh dng.
Phng thc format()
Phng thc ny nh dng nhiu i s da trn mt chui nh dng. Chui
nh dng cha c phn nh dng ln hng chui bnh thng nhng n khng
kt hp vi bt k mt i s no. Cc chui nh dng h tr nhiu c tnh.
Thnh phn nh dng bt u bng du %. V d,
System.out.println(%d, + sum);
Cu lnh ny hin th gi tr nguyn ca bin sum.
C php ca mt chui nh dng nh sau:
C php:
%[arg_index$][flags][width][.precision]conversion character
Trong ,
arg_index L mt s nguyn theo sau l $. S nguyn cho bit i s s
c in ti v tr c cp.
flags C nhiu bin c khc nhau trong Java nh bng 2.1
Flag (C)
22/114
M t
Chn mt du + hoc - vi i s ny
AptechVietnam
Dn u i s ny vi cc s 0
width - Xc nh s ti thiu cc k t s c in
precision xc nh s k t s s c in sau du thp phn. Dng vi
cc s du chm ng.
conversion character - Kiu ca i s c nh dng. V d, b l
boolean, c l char, d l s nguyn, .
Cc gi tr t trong cp du [] l ty chn. Ch cc thnh phn yu cu xc
nh nh dng l du % v k t chuyn i.
on m 5 minh ha cch s dng phng thc format()
int val = 5;
double sq = 2.236068;
System.out.format("The square root of %d is %f.%n",val,sq);
Kt qu ca on m trn nh sau:
The square root of 5 is 2.236068.
23/114
Gi tr k t
\f
\r
\xxx
\uxxxx
24/114
AptechVietnam
25/114
Condition2
(iu kin 2)
Condition1 &
Condition2
Condition1 |
Condition2
True
True
True
True
True
False
False
True
False
False
False
False
False
False
False
False
26/114
AptechVietnam
num1 = 5;
27/114
num2 = 10;
char op = '*';
System.out.println( (op == '-') ? (num1 - num2) : (op ==
'+') ? (num1 + num2) : (op == '*') ? (num1 * num2) :
"Invalid operator");
Trong on m 9, iu kin cui cng l true nn kt qu l 50.
28/114
AptechVietnam
Ton t u tin cao nht l **. Ngha l c**d c thc hin trc tin, ta
ng n trong ngoc trn.
30/114
AptechVietnam
// c php kiu hm
C kim tra
Trc khi chuyn kiu c thc hin, mt kim tra trong lc chy
chng trnh c thc hin xem kiu ch n c cha c gi
tr ngun hay khng. Nu khng, mt li b sinh ra.
Mu bit
31/114
Tm tt bi hc
Bin l mt tn c dng tham chiu n cc gi tr
ch nh trong chng trnh.
Hng l gi tr khng i c vit thng trong m lnh
khng i hi s tnh ton no c.
Java c cc loi d liu c sn, gi l d liu nguyn
thy.
nh dng d liu xut ra ngi ta dng lp Formatter
hoc s dng cc phng thc format() v printf() ca
lp PrintStream.
Mt s cc k t c bit c biu din kt hp vi du
\
Java cung cp nhiu loi ton t, l
32/114
Ton t s hc
Ton t bit
Ton t quan h
Ton t logic
Ton t iu kin
Ton t gn
AptechVietnam
33/114
C php:
if (iu_kin)
{
if (iu_kin)
{
//cu lnh/khi lnh ny c thc hin nu iu kin ng
}
else
{
//cu lnh/khi lnh ny c thc hin nu iu kin sai
}
}
else
{
//cu lnh/khi lnh ny c thc hin nu iu kin sai
}
}
}
else
{
//S khng chia ht cho 3 v 5
System.out.println(The number is not divisible by 3 and 5.);
34/114
AptechVietnam
Vng lp while
Vng lp do while
Vng lp for
Vng lp thc hin mt lnh (hoc khi lnh) chng no tha mn mt iu kin
hoc tha mn s ln lp xc nh.
3.2.1 Vng lp while
Vng lp while dng thc hin mt lnh hoc khi lnh chng no iu kin
cn true (ng). Ti mt v tr no trong vng lp lm cho biu thc iu kin
thnh false (sai), nu khng vng lp s thc hin v tn.
36/114
AptechVietnam
C php:
...
while(iu_kin)
{
Cc cu lnh;
...
}
...
Thn ca vng lp l rng nu n khng cha cu lnh no c, v mt c php,
n vn ng trong Java. on m di y minh ha cch s dng thn vng
lp rng:
on m 3:
......
int num1 = 1;
int num2 = 30;
while (++num1 < --num2);
System.out.println(The midpoint is: + num1);
......
Trong on m trn, gi tr ca bin num1 c tng 1 v gi tr ca bin num2
c gim 1, sau em so snh. Vng lp c thc hin chng no gi tr
ca num1 ln hoc bng num2. Do vy, bin num1 c gi tr gia num1 v
num2, kt qu in ra:
The midpoint is: 16
37/114
38/114
AptechVietnam
39/114
40/114
AptechVietnam
41/114
42/114
AptechVietnam
43/114
44/114
AptechVietnam
45/114
1
3
6
10
15
21
28
36
45
55
46/114
AptechVietnam
3.4 Nhn
Cc cu lnh trong Java c th nh nhn. Nhn thng c hay dng vi
vng lp for, while kt hp vi break hoc continue. Nhn c nhn din bi
tn nh danh theo sau l du 2 chm v t trc lnh nh nhn.
Lnh nh nhn c s dng trong trng hp cc vng lp lng nhau. N
dng ch nh vng lp lng trong thc hin bc lp k tip hay ngt vng
lp. on m di y minh ha cch s dng nhn
on m 12:
int i;
outer:
for(i=0;i<5;i++)
{
if(i==2)
{
System.out.println("Hello");
break outer;
}
47/114
48/114
AptechVietnam
49/114
50/114
AptechVietnam
AptechVietnam
51/114
52/114
AptechVietnam
53/114
package test;
import Java.util.Scanner;
public class PowerOfTwo
{
public static void main(String [] args)
54/114
AptechVietnam
55/114
56/114
AptechVietnam
57/114
Kt qu s l:
The color used is: Magenta
4.6 Garbage Collection (GC) Thu gom rc
Khi mt i tng (Object) c to ra, n c cp pht vng nh trong b
nh. Vng nh ny c gi l Heap. Cc i tng trong Java c to ra
bng ton t new v vng nh ca i tng c cp pht trong Heap lc
thc thi. Khi i tng trn Heap khng cn c tham chiu bi chng trnh,
chng tr nn thch hp cho thnh phn thu gom rc (Garbage Collection), v
Java Heap c gi l
58/114
AptechVietnam
59/114
60/114
AptechVietnam
Khai bo, to
v khi gn
gi tr cho cc
phn t
Khai bo v cp
pht vng nh
cho cc phn t
trong mng dng
t kho new
Khai bo mng,
cp pht vng
nh v khi gn
gi tr cho cc
phn t
datatype[]
identifier = new
datatype[size]
datatype[]
identifier =
{value1,
value2,valueN}
V d
char[] ch;
khai bo mt mng kiu
k t tn l ch
char[] ch = new
char[10];
khai bo v khi to
mt mng ch lu 10
k t.
char[] ch =
{A,B,C,D};
khai bo mt mng ch
bn phn t vi cc gi
tr c khi gn
AptechVietnam
61/114
62/114
AptechVietnam
Chng 5 Mng
5.1.2 Sp xp mng
Lun cn thit sp xp cc phn t trong mng theo gi tr c th t t cao
n thp (th t gim dn - descending order) hoc ngc li (th t tng dn
ascending order).
Qu trnh sp xp mng cn phi hon i gi tr gia cc phn t mng. C
nhiu cch khc nhau sp xp mng. Cc cch sp xp ging nhau ch
chng u so sch mi phn t trong mng vi phn t khc v hon i gi tr
nu gi tr t sai v tr.
Qu trnh sp xp hon i thc hin vi cc phn t bt u tp gi tr. Kiu
sp xp ny so snh gi tr ca phn t u tin vi mi phn t tip theo v
thc hin cc hon i cn thit. Tip n phn t th hai s c so snh vi
mi phn t tip theo cn li trong mng v thc hin cc hon i cn thit.
Tng t vi cc phn t cn li trong mng n khi khng cn hon i no
xy ra bc cui cng.
Hnh 5.1 m t khi nim ca sp xp hon i.
65
10
57
98
105
304
65
304
304
304
304
304
10
10
105
105
105
105
57
57
10
98
98
98
98
65
57
10
65
65
105
98
65
57
10
57
304
105
98
65
57
10
63/114
105
98
65
57
10
AptechVietnam
Chng 5 Mng
phn t u tin. V cch tm kim ny thc hin theo dng tuyn tnh nn cn
c gi l tm kim tuyn tnh (linear search). Tuy nhin, nu thc hin tm trn
mng khng c sp xp th chm.
K thut hiu qu nht c th c p dng tm cc phn t trong mt mng
c sp xp l k thut tm kim nh phn. K thut ny nhanh hn so vi cc
phng thc tm kim khc. K thut ny kim tra phn t nm gia ca mng.
Nu gi tr cn tm bng phn t gia, th tm kim kt thc. Nu gi tr cn tm
nh hn phn t gia, th thc hin tm nh phn trn na phn u ca mng.
Nu ln hn, th thc hin tm nh phn trn na phn sau ca mng. Trc khi
thc hin tm kim nh phn th mng phi c sp xp.
Hnh 5.2 minh ha k thut tm kim nh phn trn mt mng c sp xp.
Gi tr cn tm l 11.
65/114
66/114
AptechVietnam
Chng 5 Mng
C php:
int codePointBefore(int index);
V d 2 :
String str = Aptech Global Learning Solutions;
System.out.println(str.codePointBefore(1));
Kt qu:
65
5.2.3 codePointCount()
Phng thc codePointCount() tr v s lng k t Unicode gia hai ch mc
trong chui.
C php:
int codePointCount(int start, int end)
V d 3:
String str = Aptech Global Learning Solutions;
System.out.println(str.codePointCount(0,5));
Kt qu:
5
5.2.4 startsWith()
Phng thc startsWith() tr v gi tr logic kim tra chui c bt u bng
mt tin t (prefix) xc nh hay khng.
C php:
boolean startsWith(String prefix);
V d 4 :
String str = Aptech Global Learning Solutions;
System.out.println(str.startsWith(Apt));
Kt qu:
true
5.2.5 endsWith()
67/114
68/114
AptechVietnam
Chng 5 Mng
Kt qu hin th:
aptech global learning solutions
5.2.8 valueOf()
Phng thc valueOf() tr v chui tng ng vi i s xc nh. i s c
th l mt trong cc gi tr sau: boolean, char, float, double, int, long, mng
char, hoc object.
C php:
Static String valueOf(char[] data);
Static String valueOf(char[] data, int offset, int count);
V d 8:
Char [] array = {A, p,t,e,c,h,
,G,l,o,b,a,l};
System.out.println(String.valueOf(array));
System.out.println(String.valueOf(array,7,6);
Kt qu hin th:
Aptech Global
Global
5.2.9 toCharArray()
Phng thc toCharArray() chuyn ni dung ca chui thnh mng cc k t.
C php:
char [] toCharArray();
V d:
char [] array;
String str =Aptech Global Learning Solutions;
Array = str.toCharArray();
System.out.println(String.valueOf(array));
Kt qu hin th :
Aptech Global Learning Solutions
5.2.10 equalsIgnoreCase()
69/114
AptechVietnam
Chng 5 Mng
int length();
V d:
StringBuilder sb = new StringBuilder(Aptech Global
Learning Solutions);
System.out.println(sb.length());
Hin th :
32
5.3.5 replace()
Phng thc replace() thay th nhng k t trong i tng StringBuilder bng
nhng k t mi.
C php:
StringBuilder replace(int begin, int end, String str);
V d 15 :
StringBuilder sb = new StringBuilder(Aptech Global
Learning Solutions);
System.out.println(sb.replace(23,32,Services));
Kt qu hin th :
Aptech Global Learning Services
5.3.6 setCharAt()
Phng thc setCharAt() thay th mt k t ti ch mc xc nh t i tng
StringBuilder bng mt k t mi.
C php:
void setCharAt(int index, char ch);
V d:
StringBuilder sb = new StringBuilder(Aptech Global
Learning Solutions);
sb.setCharAt(7,g);// thay th ch hoa G thnh ch thng
g
System.out.println(sb);
72/114
AptechVietnam
Chng 5 Mng
Kt qu hin th :
Aptech global Learning Solutions
5.3.7 setLength()
Phng thc setLength() thit lp di ca StringBuilder.
C php:
void setLength(int newLength);
Nu di mi ln hn di hin ti, tt c cc k t mi c thit lp v k
t null (\u0000). Nu chiu di nh hn chiu di hin ti, th k t u tin ca
mng cho n k t cui cng ca chiu di mi c gi li, phn cn li sau
cng c ct b.
V d 17:
StringBuilder sb = new StringBuilder(Aptech Global
Learning Solutions);
sb.setLength(35);// chiu di c l length=32, chiu di
mi length = 35;
System.out.println(sb);
sb.setLength(13); // chiu di mi l length = 13
System.out.println(sb);
Kt qu hin th :
Aptech Global Learning Solutions
Aptech Global
5.3.8 appendCodePoint()
Phng thc appendCodePoint() b sung thm mt Unicode code point vo
i tng StringBuilder
C php:
StringBuilder appendCodePoint(int codePoint);
V d:
StringBuilder sb = new StringBuilder(Aptech Global
Learning Solutions);
System.out.println(sb.appendCodePoint(123)); // chn k t
{
Kt qu hin th :
73/114
74/114
AptechVietnam
Chng 5 Mng
//Tr v chui con v tr ch mc 7 v cho n ch mc 21
str = sb.substring(7,21);
System.out.println(str);
Kt qu hin th:
Global Learning Solutions
Global Learning
75/114
Tm Tt Bi Hc
Mng c dng lu tr nhiu phn t cng kiu d liu trong mt
dy v tr vng nh lin tip nhau
Gi tr lu tr trong cc phn t mng c th c tm v sp xp
Hng String trong Java l mt trng hp ca lp String.
Lp String cung cp nhiu phng thc a dng tm kim v chia tch
trong chui
String khng th bin i c, c ngha rng chng l hng v gi tr ca
chng khng th thay i c
Lp StringBuilder c dng nh mt String c th thay i ni dung
76/114
AptechVietnam
Mc Tiu Bi Hc
Kt thc bi hc ny, hc vin c th:
nh ngha packages v lit k nhiu loi package
Cc bc ci t v s dng packages ca ngi dng nh ngha
Nhn bit cc cch truy nhp public, private v protected
Trng thi dng default hoc truy nhp package
nh ngha v lit k cc trng v nh ngha phng thc
6.1 Gi (Package)
Package trong Java l mt nhm cc lp (class) v cc giao tip (interface) c
lin quan vi nhau c t chc thnh mt n v. Mt package, ln lt, cha
cc package con hoc khng. Nu mt lp c to ra khng ch ra package
no, n thuc v package khng c tn. iu ny thng gp trong cc ng
dng nh.
Tn lp i km tn cc package cha lp y gi l tn y ca lp(Fully
qualified name). V d, tools.drawing.Shapes l tn y ca lp Shape.
Package c phn thnh package c sn hay nh ngha trc v package do
ngi dng nh ngha. Nhng package c sn l phn Java API. Package do
ngi dng nh ngha c to bi nh pht trin ng dng.
6.2 To v s dng package
Cc bc to mt package trong Java c c th nh sau:
Bc u tin l chn tn cho package. Tn package c vit di dng ch
in thng, khng bt u bng k t ch s v khng c du ni (-). Tuy nhin,
chng c th cha cc k t gch di. Ngay khi tn package c chn, mt
th mc c tn ng vi tn package c to ra. Tt c cc tp tin ngun cha
AptechVietnam
77/114
78/114
AptechVietnam
on m 3:
package company;
import factory.Machines;
public class Resources {
public void testMethod() {
Machines objMachines = new Machines();
}
}
ch ra lp Resources thuc package company, lnh package c thm
vo dng u tin ca on m. dng lp Machines trong lp Resources,
cn phi import lp Machines vo. Lc bin dch lp Resources, phi m bo
classpath cha ng dn ca th mc cha cc package, y l factory.
Tt c cc lnh import trong lp phi c t sau cu lnh package v trc
khai bo lp. Cc lnh import v package t trong mt tp tin s nh hng
n tt c cc lp trong tp tin v khng th p dng cho ring tng lp.
Trong lnh package, tn ca cc package v tn ca package con c phn
cch bi du chm. Mi thnh phn ca tn package phi l tn mt th mc
trn my cc b. V d, nu lnh package nh di y:
package demo.management.list.src;
th, phi to cu trc th mc nh hnh di :
demo\management\list\src.
Thng thng, tn y cn phi s dng truy nhp nhng thnh phn tnh
(static) ca lp trong lp khc. Tuy nhin, iu lm cho m tr nn cng
knh, c bit khi c nhiu li gi thnh phn tnh trong cng mt cu lnh. Java
cung cp cch gii quyt bng cc lnh import static. Lnh import static cho
php mt chng trnh import ring l hay ton b nhng thnh phn tnh. V d,
nu lp Machines thuc vo package mnc.factory c mt thnh phn tnh
boltSize cn c dng trong lp Gadgets, th lnh import static c th c
s dng. Lc ny, boltSize c th c dng bt c ni u bn trong lp
Gadgets m khng cn dng tn y ca n. on m 4 minh ha trng
hp ny.
on m 4:
import static mnc.factory.Machines.boltSize;
class Gadgets {
public void assign() {
79/114
80/114
AptechVietnam
Trng
d liu
Yes
Yes
Yes
Yes
C th truy nhp
Phng Hm dng
Lp
thc
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
Yes
Interface
Yes
No
No
Yes
Bng 6.1 : Ch nh truy nhp cho nhng thnh phn khc nhau
Nh vy, nh bng 6.1, lp v interface mc cao nht c th l public hoc mc
nh cch truy nhp, trng d liu, hm dng v phng thc c th c mt
trong bn ch nh truy nhp. V d, mt hm dng c th c khai bo nh
on m 5.
on m 5:
public class Building {
private int floors;
Building( ) {
floors=10;
}
}
Trong on m 5, hm dng khng nh ngha ch nh truy nhp (access
modifier), v th ch c truy nhp trong package ca n.
Bng 6.2 th hin cch thc cc ch nh truy nhp tc ng n lp, interface
hoc thnh phn. V d, mt thnh phn protected ca lp c th truy nhp bn
trong lp ca n, bn trong lp con v bn trong nhng lp trong cng package
Nhng thnh phn c th truy nhp
Ch nh truy
nhp
public
Lp
Yes
Package
Yes
Lp con
Yes
Bn ngoi
Package
Yes
81/114
Yes
Yes
Yes
No
Yes
Yes
No
Yes
No
No
No
No
82/114
AptechVietnam
83/114
84/114
AptechVietnam
Tm Tt Bi Hc
Package (gi) trong Java l mt nhm cc lp (class) c quan h vi
nhau v nhng ci chung c sp xp li vi nhau nh mt n v.
Package c th chia lm 2 loi: package c sn hoc package do ngi
dng nh ngha.
Cu lnh khai bo package c khai bo vo phn trn cng ca mt
class v dng lnh import import mt hoc nhiu class(lp) t mt
package khc vo trong chng trnh.
Cch thc truy nhp ch nh v m t trong iu khin Java cho php
truy nhp ca lp v cc thnh vin ca lp.
B t cho trng v phng thc l nhng t kha dng xc nh
trng v phng thc cn c khai bo cho iu khin truy nhp ca
ngi dng
85/114
AptechVietnam
87/114
88/114
AptechVietnam
// Xe c
// Tng tc
System.out.println("Accelerate in Vehicle.");
}
void brake(){
// Hm thng
System.out.println("Brake in Vehicle.");
}
}
public class Truck extends Vehicle
// Truck: xe ti
{
static void accelerate(){
89/114
}
}
7.2.3 Che lp cc thuc tnh ca lp cha
Mt thuc tnh (field) ca lp con che lp bt k thuc tnh no ca lp cha cng
tn, thm ch kiu ca chng khc nhau. Bn trong lp con, thuc tnh ca lp
cha khng th c tham chiu bng tn thng thng m phi dng t kha
super. i vi cc tham s ca hm dng v phng thc, nu tn ca mt
tham s v thuc tnh ging nhau, th tham s che lp thuc tnh. i vi trng
hp ny, t kho this phi c dng truy nhp n thuc tnh.
Ni chung, cc thuc tnh n khng c khuyn dng v n lm cho m kh
c. Tuy nhin, m d c hn, lp trnh vin thnh thong t tn ging nhau
cho bin thuc tnh v tham s ca phng thc. Khi , tham s che lp thuc
tnh. Do , t kho this c dng truy xut n thuc tnh.
7.3 Np chng (Overloading)
7.3.1 Np chng phng thc
90/114
AptechVietnam
91/114
a, Element b){
code here
a, Element b, Element c){
code here
92/114
AptechVietnam
AptechVietnam
Vehicle
A Car IS-A Vehicle
Car
95/114
Tm tt chng
Khi nim v dn xut mt lp mi t lp tn ti c bit nh l tha
k.
Tt c cc lp l lp con ngm nh ca lp i tng. Java ch h tr
n tha k c ngha l mt lp Java ch c th c dn xut t mt lp
cha.
Giao tip cng c m rng t cc giao tip khc ging nh cc lp. T
kho extends c dng dn xut cc giao tip mi t cc giao tip
cha khc.
Java h tr a tha k trong cc giao tip
Ghi phng thc l mt khi nim m trong 2 phng thc c cng
tn, s lng v kiu tham s v cng kiu tr v .
Np chng phng thc l mt khi nim m trong 2 phng thc c
th c cng tn, kiu tr v nhng khc tham s.
Cc hm dng c np chng tng t cc phng thc .
T kho this dng gi cc hm dng t bn trong 1 hm dng khc.
Cc tham chiu giao tip c th dng lu tr th hin ca bt k lp
no ci t giao tip ny.
Cc giao tip c th cha bin m cc bin ngm nh l final v static
trong lp ci t giao tip .
96/114
AptechVietnam
Chng 8: M rng lp
Mc tiu bi hc:
Kt thc bi hc ny, hc vin c th :
nh ngha phm vi ca bin
Hiu s khc nhau gia lp v bin th hin
M t phng thc tnh
Ch r cc u khuyt ca phng thc tnh
Ch r cc u khuyt ca bin th hin
8.1 Gii thiu v bin:
C hai loi bin trong Java. Loi th nht l bin nguyn thu (Primitive
variable). Mt bin nguyn thu dng lu gi tr c kiu d kiu nguyn
thu. Loi th hai l bin tham chiu (Reference variable) dng lu tham
chiu n i tng.
8.1.1 Bin nguyn thu
Bin th hin (Instance variable)
Cc bin nguyn thu c th thuc v hai loi ty thuc vo v tr chng c
khai bo. Mt bin th hin l mt bin c khai bo bn trong mt lp
nhng ngoi phng thc. Cc bin th hin l cc trng ca lp v ch
c khi to khi lp c to th hin. Khi to ra i tng, n c ring
bn sao mi trng ca lp ty thuc vo kiu t kha c dng vi bin
y.
Cc bin hot ng cho n khi lp cn hot ng. Ni cch khc, cc bin
c th c truy xut cho n khi mt tham chiu n lp hoc i tng tn
ti.
Bin cc b (Local variable)
Bin c khai bo bn trong phng thc c gi l bin cc b. Cc
bin c to ra ngay khi phng thc c triu gi v c gii phng khi
phng thc kt thc. Bin cc b ch c th truy xut bn trong phng
thc chng ang c khai bo. Chng khng th truy xut t bt c
phng thc khc hay bt c u bn trong lp.
AptechVietnam
97/114
98/114
AptechVietnam
Chng 8 M rng lp
on m 2:
public class PixelPoint
{
Pixel pix;
//Bin tham chiu th hin
public void showPixel(){
Pixel newPixel;
//Bin tham chiu cc b
}
public vodi setPixel(Pixel pix){
//Khi to bin tham chiu th hin dng t kha this
this.pix = pix;
}
}
8.1.3 T kho static: cc bin v cc phng thc
Mt bin static c gi l bin lp bi v mt bn sao n l ca bin tn ti
cho tt c th hin ca lp. Ni cch khc, tt c cc i tng ca lp chia s
cng mt bn sao ca bin static. iu ny cng ng vi bin tham chiu.
Phng thc c th c nh du static. Tuy nhin, mt phng thc static
c th che lp nhng khng c ghi . Cc phng thc static c th c
truy xut trc tip dng tn lp hn l tham chiu i tng. Mt phng thc
static ch c th truy xut cc bin cc b, cc thuc tnh static v cc tham s
phng thc.
B khi to tnh (static initializer)
Mt lp c th cha m trong khi static m khng thuc v bt k phng
thc bnh thng no. Nh cc khi static c khai bo trong on m 3.
Cc khi static c thc thi ch mt ln khi lp c np. Nu nhiu hn
mt khi static tn ti bn trong lp th chng s c thc thi theo th t
xut hin trong m. Trong on m 3, khi lp Vehical u tin c np,
khi static initializer c thc thi v bin price c khi to vi gi tr
50.50
on m 3:
public class Vehicle
{
static double price;
//Instance Variable
static{
price = 50.50; //Static initializer block
}
}
99/114
100/114
AptechVietnam
Chng 8 M rng lp
101/114
Tm tt bi hc
Cc bin nguyn thu c dng lu tr cc gi tr kiu d liu
nguyn thu v cc bin tham chiu dng lu tr cc tham chiu
n cc i tng.
Cc bin th hin nguyn thu c th truy nhp thng qua lp m
chng mi c khai bo.
Cc bin cc b nguyn thu c khai bo bn trong cc phng
thc v phm vi ca chng b gii hn trong phng thc .
Cc bin tham chiu dng lu tr cc tham chiu n cc i
tng. Phm vi ca bin th hin v bin cc b tng t nh cc
bin nguyn thu .
Mt bin static c gi mt bin lp bi v mt bn sao n ca bin
ang tn ti trong tt c cc th hin ca lp.
Cc khi khi to static u khng c trong thn ca bt k phng
thc no v dng khi to lp .
102/114
AptechVietnam
Chng 9: Ngoi l
Mc tiu bi hc
Kt thc bi hc ny, hc vin c th:
M t v cc kiu ngoi l
M t v cng dng ca t kha throw v throws
To ngoi l do ngi dng nh ngha
Ci t cc assertion
AptechVietnam
103/114
104/114
AptechVietnam
Chng 9 Ngoi l
Ngoi l do ngi dng nh ngha c dn xut t lp Exception. Ngn ng
lp trnh Java cho php cc nh pht trin ch nh nh ngha v to cc ngoi l
c kim sot (checked exception)
9.3.1. To ngoi l do ngi dng nh ngha (User-defined exception)
Lp Exception l lp c s ca tt c cc ngoi l do ngi dng nh ngha.
Cc ngoi l do ngi dng nh ngha cung cp cc gii php thit thc c th
c s dng trong chng trnh. Lp Throwable l lp cha ca tt c cc
ngoi l v li trong ngn ng Java.
Tt c cc phng thc ca lp Throwable c k tha bi lp Exception, do
, lp Exception l lp con ca lp Throwable. V vy, cc lp ngoi l do
ngi dng nh ngha c th s dng tt c cc phng thc ca lp
Throwable.
9.3.2. Khi no nm ra cc ngoi l?
iu quan trng i vi nh pht trin cn bit khi no dng cc ngoi l. C th
c mt khuynh hng s dng qu nhiu lp Exception v n tin dng. im
lu l mi khi mt ngoi l c nm ra lm cn tr s thc hin ca chng
trnh. Ch c mt hng dn cn tun theo quyt nh khi no nm ra mt
ngoi l l nu mt phng thc gp mt iu kin bt thng m n khng th
iu qun, n nn nm ra ngoi l. iu ny to ra mt cu hi khc v iu kin
no c th c phn loi nh l iu kin bt thng (abnormal condition)
Do vy, iu kin bt thng c th bt c iu kin no to ra kt qu khng
nh mong i so vi chc nng bnh thng ca mt phng thc. Cc ngoi
l c th c dng kim tra c cc tham s truyn vo cho phng thc
public hoc hm dng public l hp l hay khng.
9.3.3. Xu chui ngoi l
Xu chui ngoi l (exception chaining) hay bao ng ngoi l, l mt k thut
lp trnh hng i tng iu qun ngoi l bng vic nm li re-throw mt
ngoi l n bt sau khi bao ng (wrapping) n vi mt ngoi l mi. Ngoi
l gc c lu nh thuc tnh (nh nguyn nhn) ca ngoi l mi. tng l
mt phng thc nm cc ngoi l c nh ngha cng mc nh ca chnh
phng thc m khng loi b cc thng tin t cc mc thp hn.
on m thng dng trong Java n bt ngoi l v nm ra ngoi l khc.
try{
}catch(YourException e){
throw new MyException();
}
105/114
106/114
AptechVietnam
Chng 9 Ngoi l
} else{
107/114
on m 3:
if (sum > 600) {
} else{
assert sum < 600 : "sum is less than 600";
}
Ti v tr khc, assertion c th c s dng, l lnh switch khng c mnh
default. Khi nh pht trin mong mun mt trong cc mnh case c thc
hin th mnh default c th c loi b. V d, on m 4, mt trong cc
lnh switch-case s c thc hin.
on m 4:
switch (num) {
case 1:
...;
break;
case 2:
...;
break;
case 3:
...;
break;
}
Ch r mt gi nh nhm m bo bin num s c mt trong ch ba gi tr.
Mnh assert c th c thm vo trong mnh default kim tra gi
nh, nh minh ha trong on m 5.
on m 5:
default:
assert false : num;
Nu bin num nhn mt gi tr khc v assertion c cho php, assert s hng
v AssertionError s c nm ra.
C mt la chn khc chp nhn c trong on m 6
on m 6:
108/114
AptechVietnam
Chng 9 Ngoi l
default:
throw new AssertionError(num);
La chn trn lm tng tnh bo v ngay c assertion khng c cho php,
nhng s bo v m rng thm khng tng thm chi ph. Lnh throw s khng
thc hin tr khi chng trnh hng. Hn na, la chn trn l hp l trong mi
trng hp khi lnh assert khng c php. Nu phng thc bao tr li gi
tr, mi case trong lnh switch cha mt lnh return. Nu khng lnh return
no t sau lnh switch, th s gy ra li c php thm vo mnh default vi
assertion. Phng thc khng tr li gi tr no nu khng c case no tha
mn v assertion b v hiu.
Cc nh lng bt bin lung iu khin
Mt assertion c th t ti v tr iu khin khng t ti. Lnh assertion cng c
th c s dng nh trong on m 7.
assert false;
void assertdemo(){
for (...){
if (...){
return;
}
}
//Execution should never reach this point!!!
}
on m trn c th c vit li nh trong on m 8
on m 8:
void assertdemo(){
for (...){
if (...){
return;
}
}
assert false;
}
9.4.2 Cho v khng cho php assertion
Cc ty chn dng lnh ca lnh Java cho php hoc khng cho php assertion
mc lp. Dng lnh chuyn i enableassertion hay vit tt l ea, cho
109/114
in
thread
main
AptechVietnam
Chng 9 Ngoi l
{
111/114
112/114
AptechVietnam
Chng 9 Ngoi l
try{
Bar bar = new Bar();
System.out.println("bar.m1( 1 ): ");
bar.m1(1);
System.out.println("bar.m1( -1 ): ");
bar.m1(-1);
}catch(AssertionError ae){
printAssertionError(ae);
}
}
}
113/114
Tm Tt Bi Hc
Cc ngoi l c kim sot th hin cc tnh hung khng c kim sot
bi chng trnh.
Cc ngoi l khng kim sot th hin khim khuyt trong chng trnh
T kha throw cho bit ngoi l xy ra.
Cc ngoi l cng c th c nh ngha bi ngi dng v c th c
s dng trong chng trnh.
Assertion c th c t ti bt k v tr no iu khin khng t ti.
114/114
AptechVietnam