You are on page 1of 27

CHNG 4 K TH A V A HNH TRN JAVA

N i dung c a chng ny t p trung trnh by cc c trng h ng i t ng c a ngn ng Java: K th a n K th a kp Cc l p tr u t ng a hnh

4.1 K TH A N
4.1.1 L p
Java coi l p l m t khun m u (Template) c a m t i t ng, trong l p ch a cc thu c tnh v cc phng th c ho t ng c a i t ng.

Khai bo l p
M t l p c khai bo v i c php:
<tnh ch t> class <tn l p> { }

L p trong java c ba tnh ch t c trng b i ba t kho: public: L p thng th ng, c th c truy c p t cc gi (package) khc. public l gi tr m c nh cho tnh ch t c a l p. final: Khai bo l p h ng, l p ny khng th t o d n xu t. T c l khng c l p no k th a c t cc l p c tnh ch t final. abstract: Khai bo l p tr u t ng, l p ny ch c php ch a cc phng th c tr u t ng. Hn n a, khng th t o cc th hi n (Instance) c a cc l p tr u t ng b ng ton t new nh cc l p thng th ng.

Chng trnh 4.1 khai bo m t l p thng th ng v i ki u m c nh l public v i dng khai bo. Chng trnh 4.1
package vidu.chuong4; class Person {

S d ng l p
L p c s d ng khi chng trnh c n m t i t ng c ki u c a l p . Khi , i t ng c khai bo d a vo ton t new:
<tn l p> <tn i t ng> = new <tn l p>();

V d , mu n t o m t i t ng c ki u l l p Person trong chng trnh 4.1, ta dng l nh sau:


Person myClass = new Person();

Khai bo thu c tnh c a l p


Thu c tnh c a l p c khai bo theo c php:
<tnh ch t> <ki u d li u> <tn thu c tnh>;

Ki u d li u: c th l cc ki u d li u c b n s n c c a java, c th l cc l p do ng i dng t nh ngha. Tn thu c tnh: c t tn theo quy t c t tn bi n c a java. Tnh ch t: Cc thu c tnh v phng th c c a l p c cc tnh ch t c c trng b i cc t kho sau (gi tr m c nh l public): public: c th c truy c p t bn ngoi l p nh ngha. protected: ch c truy c p t l p nh ngha v cc l p k th a t l p . private: ch c truy c p trong ph m vi b n thn l p nh ngha. static: c dng chung cho m t th hi n c a l p, c th c truy c p tr c ti p b ng <tn l p>.<tn thu c tnh> m khng c n kh i t o m t th hi n c a l p. abstract: nh ngha m t thu c tnh tr u t ng. Thu c tnh ny khng th truy nh p trong l p nhng c th b nh ngha ch ng cc l p k th a. final: m t thu c tnh h ng, khng b nh ngha ch ng cc l p k th a. native: dng cho phng th c khi ci t ph thu c mi tr ng trong m t ngn ng khc, nh C hay h p ng . synchronized: dng cho phng th c t i h n, nh m ngn cc tc ng c a cc i t ng khc khi phng th c ang c th c hi n.

Chng trnh 4.2 minh ho vi c khai bo hai thu c tnh l tn v tu i c a l p Ng i (Person). Chng trnh 4.2
package vidu.chuong4;

class Person { public String public int } name; age;

Khai bo phng th c c a l p
Phng th c c a l p c khai bo theo c php
<tnh ch t> <ki u tr v > <tn phng th c> ([<cc tham s >]) [throws <cc ngo i l >] { }

Tnh ch t: c trng b i cc t kho tng t nh tnh ch t c a thu c tnh. Gi tr m c nh l public. Ki u tr v : Ki u d li u tr v c a phng th c, c th l ki u d li u s n c c a java ho c l ki u do ng i dng t nh ngha. Tn phng th c: tun theo qui t c t tn bi n c a java. Cc ngo i l : l m t i t ng c bi t c t o ra khi chng trnh g p l i. Java s tr l i cho chng trnh ngo i l ny theo t kho throws. Cc ngo i l , n u c, c phn cch nhau b i d u ph y. Cc tham s : cc tham s c a phng th c, c li t k theo c p <ki u tham s > <tn tham s >, cc tham s c phn bi t b i d u ph y.

Chng trnh 4.3 m t vi c khai bo phng th c show() hi n th thng tin c nhn c a l p Person. Chng trnh 4.3
package vidu.chuong4; class Person { public String public int name; age;

public void show() { System.out.println( name + is + age + years old!); }

Phng th c kh i t o c a l p
Phng th c kh i t o (Constructor) c dng kh i t o m t th hi n c th c a m t l p, ngha l gn cc gi tr kh i u cho cc thu c tnh, n u c, v t o ra m t i t ng c th . Phng th c kh i t o ph i cng tn v i l p. Lu : Phng th c kh i t o ph i c tn trng v i tn c a l p Phng th c kh i t o khng c gi tr tr v Phng th c kh i t o c tnh ch t public C th c nhi u phng th c kh i t o c a cng m t l p

Chng trnh 4.4a minh ho m t phng th c kh i t o c a l p Person b ng cch gn gi tr cho cc thu c tnh tn v tu i. Chng trnh 4.4a
package vidu.chuong4; class Person { public String public int name; age;

// Phng th c kh i d ng public Person(String name1, int age1) { name = name1; age = age1; }

public void show() { System.out.println( name + is + age + years old!); } }

Chng trnh 4.4b minh ho cch dng l p Person m chng ta v a nh ngha trong chng trnh 4.4a. Chng trnh ny s t o ra m t i t ng myPerson c a l p Person v i cc thu c

tnh c gi tr kh i t o: name = Minh v age = 21. Sau , chng trnh s d ng phng th c show() c a i t ng myPerson in ra dng thng bo Minh is 21 years old!. Chng trnh 4.4b
package vidu.chuong4; class PersonDemo { public static void main(String args[]) { Person myPerson = new Person(Minh, 21); myPerson.show(); } }

Bi n this
Bi n this l m t bi n n c bi t lun t n t i trong cc l p java: m t l p c ng m t bi n n this. Bi n ny c s d ng trong khi ch y v n tr n b n thn l p ch a n. Bi n this th ng c s d ng trong cc hm kh i t o c a l p. Chng trnh 4.4c khai bo m t l p hon ton gi ng v i l p c khai bo trong chng trnh 4.4a, nhng ch khc l c dng bi n this trong hm kh i t o c a l p. Chng trnh 4.4c
package vidu.chuong4; class Person { public String public int name; age;

// Phng th c kh i d ng public Person(String name, int age) { this.name = name; this.age = age; }

public void show() {

System.out.println( name + is + age + years old!); } }

Trong chng trnh 4.4c, ta ch n hm kh i t o c a l p, hm ny c hai bi n c c b l name v age, trng v i cc bi n c a l p. Do , trong ph m vi hm ny, bi n this.name v this.age s ch cc bi n c a l p, cn cc bi n name v age s ch cc bi n c c b c a hm. Cho nn, cc l nh gn v n th c thi nh trong chng trnh 4.4a.

4.1.2 S k th a
S k th a c s d ng khi mu n t o m t l p m i t m t l p bi t. Khi , t t c cc thu c tnh v phng th c c a l p c u tr thnh thu c tnh v phng th c c a l p m i. L p c c g i l l p cha, l p m i c g i l l p con.

Khai bo l p k th a
Khai bo l p k th a c th c hi n b i t kho extends:
<thu c tnh> <tn l p con> extends <tn l p cha> { }

Chng trnh 4.5a minh ho vi c t o m t l p Nhn vin (Employee) c k th a t l p Person c xy d ng trong ph n 4.1.1. Chng trnh 4.5a
package vidu.chuong4; class Employee extends Person { public float salary;

// Phng th c kh i d ng public Employee(String name, int age, float salary) { super(name, age); this.salary = salary; } }

Khi , o n chng trnh c a chng trnh 4.5b v n in ra dng thng bo Minh is 21 years old! v khi i t ng myEmployee g i n phng th c show() c k th a t l p Person. Chng trnh 4.5b
package vidu.chuong4; class EmployeeDemo1 { public static void main(String args[]) { Employee myEmployee = new Employee(Minh, 21, 300f); myEmployee.show(); } }

Khai bo phng th c n p ch ng
Khi mu n thay i n i dung c a cc phng th c c k th a t l p cha, ta dng cch khai bo phng th c n p ch ng. Th c ra l khai bo l i m t phng th c m i c cng tn v ki u v i m t phng th c c trong l p cha. Chng trnh 4.6a s khai bo n p ch ng phng th c show() c a l p Employee m khng dng l i phng th c show() c a l p Person n a. Chng trnh 4.6a
package vidu.chuong4; class Employee extends Person { public float salary;

// Phng th c kh i d ng public Employee(String name, int age, float salary) { super(name, age); this.salary = salary; }

// Khai bo n p ch ng public void show()

{ System.out.println( name + has a salary of + salary + $/month); } }

Khi , o n chng trnh 4.6b s in ra dng thng bo Minh has a salary of 300$/month thay v dng thng bo Minh is 21 years old! nh trong chng trnh 4.5b. L do l lc ny, i t ng myEmployee s g i phng th c show() c a l p Employee m khng g i phng th c show() c a l p Person n a. Chng trnh 4.6b
package vidu.chuong4; class EmployeeDemo2 { public static void main(String args[]) { Employee myEmployee = new Employee(Minh, 21, 300f); myEmployee.show(); } }

Quy t c truy nh p trong k th a


Cc quy t c ny quy nh kh nng truy nh p c a l p con i v i cc thu c tnh v phng th c c a l p cha: private: ch c truy nh p trong ph m vi l p cha, l p con khng truy nh p c. T t c cc l p ngoi l p cha u khng truy nh p c. protected: l p con c th truy nh p c. T t c cc l p khng k th a t l p cha u khng truy nh p c. final: l p con c th s d ng c nhng khng th khai bo n p ch ng c. public: l p con c th s d ng v n p ch ng c. T t c cc l p bn ngoi u s d ng c.

4.2 K TH A B I
Nh m trnh nh ng nh p nh ng c a tnh ch t a k th a c a C++, Java khng cho php k th a tr c ti p t nhi u hn m t l p cha. Ngha l Java khng cho php a k th a tr c ti p,

nhng cho php ci t nhi u giao ti p (Interface) c th th a h ng thm cc thu c tnh v phng th c c a cc giao ti p .

4.2.1 Giao ti p Khai bo giao ti p


C php khai bo m t giao ti p nh sau:
[public] ti p>] { } interface <tn giao ti p> [extends <danh sch giao

Tnh ch t: tnh ch t c a m t giao ti p lun l public. N u khng khai bo t ng minh th gi tr m c nh cng l public. Tn giao ti p: tun th theo quy t c t tn bi n c a java. Danh sch cc giao ti p: danh sch cc giao ti p cha c nh ngha k th a, cc giao ti p cha c phn cch nhau b i d u ph y. (Ph n trong ngo c vung [] l tu ch n). M t giao ti p ch c th k th a t cc giao ti p khc m khng th c k th a t cc l p s n c.

Lu :

Chng trnh 4.7 minh ho vi c khai bo m t giao ti p khng k th a t b t k m t giao ti p no. Chng trnh 4.7
package vidu.chuong4; public interface Product { }

Khai bo phng th c c a giao ti p


C php khai bo m t phng th c c a giao ti p nh sau:
[public] <ki u gi tr s >]) tr v > <tn phng th c> ([<cc tham

[throws <danh sch ngo i l >];

Tnh ch t: tnh ch t c a m t thu c tnh hay phng th c c a giao ti p lun l public. N u khng khai bo t ng minh th gi tr m c nh cng l public. i v i thu c tnh, th ch t ch t lun ph i thm l h ng (final) v tnh (static).

Lu :

Ki u gi tr tr v : c th l cc ki u c b n c a java, cng c th l ki u do ng i dng t nh ngha (ki u i t ng). Tn phng th c: tun th theo quy t c t tn phng th c c a l p Cc tham s : n u c th m i tham s c xc nh b ng m t c p <ki u tham s > <tn tham s >. Cc tham s c phn cch nhau b i d u ph y. Cc ngo i l : n u c th m i ngo i l c phn cch nhau b i d u ph y. Cc phng th c c a giao ti p ch c khai bo d i d ng m u m khng c ci t chi ti t (c d u ch m ph y ngay sau khai bo v khng c ph n ci t trong d u {}). Ph n ci t chi ti t c a cc phng th c ch c th c hi n trong cc l p (class) s d ng giao ti p . Cc thu c tnh c a giao ti p lun c tnh ch t l h ng (final), tnh (static) v public. Do , c n gn gi tr kh i u ngay khi khai bo thu c tnh c a giao ti p.

Chng trnh 4.8 minh ho vi c khai bo m t thu c tnh v m t phng th c c a giao ti p Product c khai bo trong chng trnh 4.7: thu c tnh lu nhn hi u c a nh s n xu t s n ph m; phng th c dng truy xu t gi bn c a s n ph m. Chng trnh 4.8
package vidu.chuong4; public interface Product { public static final String MARK = Adidas; public float getCost(); }

4.2.2 S d ng giao ti p
V giao ti p ch c khai bo d i d ng cc phng th c m u v cc thu c tnh h ng nn vi c s d ng giao ti p ph i thng qua m t l p c ci t giao ti p . Vi c khai bo m t l p c ci t giao ti p c th c hi n thng qua t kho implements nh sau:
<tnh ch t> class <tn l p> implements <cc giao ti p> { }

Tnh ch t v tn l p c s d ng nh trong khai bo l p thng th ng. Cc giao ti p: m t l p c th ci t nhi u giao ti p. Cc giao ti p c phn cch nhau b i d u ph y. Khi , l p ph i ci t c th t t c cc phng th c c a t t c cc giao ti p m n s d ng.

Lu : M t phng th c c khai bo trong giao ti p ph i c ci t c th trong l p c ci t giao ti p nhng khng c php khai bo ch ng. Ngha l s l ng cc tham s c a phng th c trong giao ti p ph i c gi nguyn khi ci t c th trong l p.

Chng trnh 4.9 minh ho vi c ci t m t l p giy (Shoe) ci t giao ti p Product v i cc thu c tnh v phng th c c khai bo trong chng trnh 4.8. Chng trnh 4.9
package vidu.chuong4; public class Shoe implements Product { // Ci t phng th c c khai bo trong giao ti p public float getCost() { return 10f; }

// Phng th c truy nh p nhn hi u s n ph m public String getMark() { return MARK; }

// Phng th c main public static void main(String args[]) { Shoe myShoe = new Shoe(); System.out.println(This shoe is + myShoe.getMark() + having a cost of $ + myShoe.getCost()); } }

Chng trnh 4.9 s in ra dng: This shoe is Adidas having a cost of $10. Hm getMark() s tr v nhn hi u c a s n ph m, l thu c tnh c khai bo trong giao ti p. Hm getCost() l ci t ring c a l p Shoe i v i phng th c c khai bo trong giao ti p Product m n s d ng, ci t ny tr v gi tr 10 i v i l p Shoe.

4.3 L P TR U T NG

L p tr u t ng l m t d ng l p c bi t, trong cc phng th c ch c khai bo d ng khun m u (template) m khng c ci t chi ti t. Vi c ci t chi ti t cc phng th c ch c th c hi n cc l p con k th a l p tr u t ng . L p tr u t ng c s d ng khi mu n nh ngha m t l p m khng th bi t v nh ngha ngay c cc thu c tnh v phng th c c a n.

4.3.1 Khai bo Khai bo l p tr u t ng


L p tr u t ng c khi bo nh cch khai bo cc l p thng th ng, ngo i tr c thm t kho abstract trong ph n tnh ch t:
[public] abstract class <tn l p> { }

Lu :

Tnh ch t: m c nh l public, b t bu c ph i c t kho abstract xc nh y l m t l p tr u t ng. Tn l p: tun th theo quy t c t tn l p thng th ng c a java. L p tr u t ng cng c th k th a m t l p khc, nhng l p cha cng ph i l m t l p tr u t ng. (Khai bo k th a thng qua t kho extends nh khai bo k th a thng th ng).

Chng trnh 4.10 khai bo m t l p tr u t ng l l p ng v t (Animal) m t cch chung chung. Chng trnh 4.10
package vidu.chuong4; abstract class Animal { }

Khai bo phng th c c a l p tr u t ng
T t c cc thu c tnh v phng th c c a l p tr u t ng u ph i khai bo l tr u t ng. Hn n a, cc phng th c c a l p tr u t ng ch c khai bo d ng khun m u m khng c ph n khai bo chi ti t. C php khai bo phng th c c a l p tr u t ng:
[public] abstract <ki u d li u tr v > <tn phng th c> ([<cc tham s >]) [throws <cc ngo i l >];

Lu :

Tnh ch t: tnh ch t c a m t thu c tnh hay phng th c c a l p tr u t ng lun l public. N u khng khai bo t ng minh th gi tr m c nh cng l public. Ki u d li u tr v : c th l cc ki u c b n c a java, cng c th l ki u do ng i dng t nh ngha (ki u i t ng). Tn phng th c: tun th theo quy t c t tn phng th c c a l p Cc tham s : n u c th m i tham s c xc nh b ng m t c p <ki u tham s > <tn tham s >. Cc tham s c phn cch nhau b i d u ph y. Cc ngo i l : n u c th m i ngo i l c phn cch nhau b i d u ph y. Tnh ch t c a phng th c tr u t ng khng c l private hay static. V phng th c tr u t ng ch c khai bo chi ti t (n p ch ng) trong cc l p d n xu t (l p k th a) c a l p tr u t ng. Do , n u phng th c l private th khng th n p ch ng, n u phng th c l static th khng th thay i trong l p d n xu t. Phng th c tr u t ng ch c khai bo d i d ng khun m u nn khng c ph n d u mc {} m k t thc b ng d u ch m ph y ;.

Chng trnh 4.11 khi bo hai phng th c c a l p tr u t ng Animal trong chng trnh 4.10: Phng th c getName() tr v tn loi ng v t, d cha bi t tn c th loi no nhng ki u tr v l String. Phng th c getFeet() tr v s chn c a loi ng v t, cng cha bi t c th l bao nhiu chn nhng ki u tr v l int.

Chng trnh 4.11


package vidu.chuong4; abstract class Animal { abstract String getName(); abstract int getFeet(); }

4.3.2 S d ng l p tr u t ng
L p tr u t ng c s d ng thng qua cc l p d n xu t c a n. V ch c cc l p d n xu t m i ci t c th cc phng th c c khai bo trong l p tr u t ng. Chng trnh 4.12a khai bo l p v loi chim (Bird) k th a t l p Animal trong chng trnh 4.11. L p ny ci t chi ti t hai phng th c c khai bo trong l p Animal:

phng th c getName() s tr v tn loi l Bird; phng th c getFeet() tr v s chn c a loi chim l 2. Chng trnh 4.12a
package vidu.chuong4; public class Bird extends Animal { // Tr v tn loi chim

public String getName() { return Bird; }

// Tr

chn c a loi chim

public int getFeet() { return 2; } }

Chng trnh 4.12b khai bo l p v loi mo (Cat) cng k th a t l p Animal trong chng trnh 4.11. L p ny ci t chi ti t hai phng th c c khai bo trong l p Animal: phng th c getName() s tr v tn loi l Cat; phng th c getFeet() tr v s chn c a loi mo l 4. Chng trnh 4.12b
package vidu.chuong4; public class Cat extends Animal { // Tr v tn loi mo

public String getName() { return Cat; }

// Tr

chn c a loi mo

public int getFeet() {

return 4; } }

Chng trnh 4.12c s d ng l i hai l p Bird v Cat trong cc chng trnh 4.12a v 4.12b. Chng trnh ny s hi n th hai dng thng bo:
The Bird has 2 feets The Cat has 4 feets

Chng trnh 4.12c


package vidu.chuong4; public class AnimalDemo { public static void main(String args[]) { Bird myBird = new Bird(); System.out.println(The + myBird.getName() + has + myBird.getFeet() + feets); Cat myCat = new Cat(); System.out.println(The + myCat.getName() + has + myCat.getFeet() + feets); } }

4.4 A HNH
4.4.1 N p ch ng
Java cho php trong cng m t l p, c th khai bo nhi u phng th c c cng tn. N p ch ng l hi n t ng cc phng th c c cng tn. C hai ki u n p ch ng trong Java: Cc phng th c c a cng m t l p c cng tn. Khi hai phng th c c a m t l p c cng tn th b t bu c chng ph i c: - Ho c danh sch cc tham s khc nhau - Ho c ki u tr v khc nhau - Ho c k t h p hai i u ki n trn. N u khng, java s khng phn bi t c chng. V d n u trong cng m t l p:
// Ch p nh n c

public int add(int x, int y){} public float add(float x, int y){}

// Khng ch p nh n c public int add(int x, int y){} public int add(int x, int y){}

Phng th c c a l p con c cng tn v i phng th c c a l p cha. Trong tr ng h p ny, cc phng th c n p ch ng c th c cng danh sch tham s v c cng ki u tr v (xem l i ph n khai bo phng th c n p ch ng trong m c k th a 4.1.2).

4.4.2 a hnh
a hnh l vi c tri u g i n cc phng th c n p ch ng c a i t ng. Khi m t phng th c n p ch ng c g i, chng trnh s d a vo ki u cc tham s v ki u tr v g i phng th c c a i t ng cho ph h p. Chng trnh 4.13 minh ho vi c khai bo nhi u hm add() c ng hai s ho c c ng hai xu k t . Chng trnh 4.13
package vidu.chuong4; public class Operator { // C ng hai s nguyn

public int add(int x, int y) { return (x + y); }

// C ng hai s

th c

public float add(float x, float y) { return (x + y); }

// C ng hai chu i k t public String add(String a, String b) { return (a + b); }

// Hm main public static void main(String args[]) { Operator myOperator = new Operator(); System.out.println(The (5+19) is + myOperator.add(5, 19)); System.out.println(The (\ab\ + \cd\) is \ + myOperator.add(ab, cd) + \); } }

Chng trnh 4.13 s hi n th ra hai dng thng bo:


The (5+19) is 24 The (ab + cd) is abcd

Trong l p Operator c hai phng th c cng tn v cng c hai tham s u vo l add(). Khi chng trnh th c thi l nh myOperator.add(5, 19), chng trnh s t i chi u cc ki u tham s , th y 5 v 19 c d ng g n v i ki u int nh t, nn phng th c add(int, int) s c g i v tr v gi tr l 24. Khi chng trnh th c thi l nh myOperator.add(ab, cd), chng trnh s t i chi u cc ki u tham s , th y ab v cd c d ng g n v i ki u String nh t, nn phng th c add(String, String) s c g i v tr v gi tr l abcd. Lu : Khi g i hm v i cc ki u d li u khc v i cc hm c khai bo, s c s chuy n i ki u ng m nh di n ra. Khi khng th th c hi n chuy n i ki u ng m nh, java s pht sinh m t thng bo l i.

Ch ng h n, trong chng trnh 4.13, n u ta th c thi l nh myOperator.add(4.0f, 5) c d ng add(float, int), chng trnh s chuy n ng m nh s nguyn 5 thnh float (chuy n t ki u int sang float thu c di n n i r ng ki u, l ki u chuy n ng m nh trong java) c th s d ng d ng c khai bo add(float, float) v k t qu s l 9.0f. N u ta th c thi l nh myOperator.add(ab, 5) c d ng add(String, int), v int khng th chuy n ng m nh thnh String nn l nh ny s pht sinh l i. trnh l i ny, ph i chuy n i ki u t ng minh cho s 5 thnh ki u String b ng m t trong cc cch sau:
myOperator.add(ab, (new Int(5)).toString()); myOperator.add(ab, 5 + );

4.5 CASE STUDY II


Trong ph n ny, chng ta s vi t m t chng trnh qu n l nhn vin c a m t cng ty. Bao g m cc l p chnh:

L p Human l m t l p tr u t ng, ch c m t phng th c duy nh t l show(). L p Person l l p k th a t l p Human, c hai thu c tnh l tn (name) v tu i (age). ng gi d li u cc thu c tnh ny c d ng private v cc phng th c truy nh p chng (get v set). Ngoi ra l p ny cn ci t phng th c show() k th a t l p tr u t ng Human. L p Employee l l p k th a t l p Person, c thm thu c tnh l lng (salary). Thu c tnh ny cng c d ng private ng gi d li u v c n cc phng th c truy nh p get/set. L p ny ci t l i phng th c show(). Hn n a, l p Employee cn c thm hai phng th c addSalary() v addSalary(float) tnh tng lng cho nhn vin: m t phng th c tng lng theo t l m c nh l 10% (khng c n tham s ), v m t phng th c tng theo gi tr c th a vo (c n tham s ).

Cc ph n ti p theo s trnh by ph n ci t chi ti t cho cc l p ny.

4.5.1 L p Human
L p Human l m t l p tr u t ng, ch c m t phng th c duy nh t l show(). y l n i dung t p tin Human.java. Chng trnh 4.14a
package vidu.chuong4; abstract class Human { abstract void show(); }

4.5.2 L p Person
L p Person l l p k th a t l p Human: C hai thu c tnh l tn (name) v tu i (age) c d ng private Cc phng th c truy nh p cc thu c tnh name (getName() v setName(String)) v age (getAge() v setAge(int)). Ci t ch ng phng th c show() k th a t l p tr u t ng Human.

y l n i dung t p tin Person.java. Chng trnh 4.14b


package vidu.chuong4; class Person extends Human {

private String name; private int age;

// Phng th c kh i d ng khng c tham s public Person() { super(); name = ; age = 0; }

// Phng th c kh i d ng c tham s public Person(String name, int age) { this.name = name; this.age = age; }

/* Phng th c truy nh p thu c tnh name */ public String getName() { return name; }

public void setName(String name) { this.name = name; }

/* Phng th c truy nh p thu c tnh age */ public int getAge() { return age; }

public void setAge(int age) { this.age = age;

// Khai bo n p ch ng public void show() { System.out.println( name + is + age + years old!); } }

4.5.3 L p Employee
L p Employee l l p k th a t l p Person: C thm thu c tnh l lng (salary) cng c d ng private ng gi d li u v c n cc phng th c truy nh p get/set. L p ny ci t l i phng th c show(). C thm hai phng th c addSalary() v addSalary(float) tnh tng lng cho nhn vin: phng th c addSalary() tng lng theo t l m c nh l 10% (khng c n tham s ), phng th c addSalary(float) tng theo gi tr c th a vo (c n tham s ).

Sau y l n i dung t p tin Employee.java Chng trnh 4.14c


package vidu.chuong4; class Employee extends Person { private float salary;

// Phng th c kh i d ng khng c tham s public Employee() { super(); salary = 0f; }

// Phng th c kh i d ng c tham s public Employee(String name, int age, float salary) {

super(name, age); this.salary = salary; }

/* Phng th c truy nh p thu c tnh salarry */ public float getSalary() { return salary; }

public void setSalary(float salary) { this.salary = salary; }

// Khai bo n p ch ng public void show() { System.out.println( getName() + is + getAge() + years old having a salary of $ + salary + /month!); }

/* Phng th c tng lng */ public void addSalary() { salary = salary*1.1f; }

public void addSalary(float addition) { salary += addition; } }

Lu : Trong phng th c n p ch ng show() c a l p Employee, ta ph i dng cc phng th c public c k th a t l p Person l getName() v getAge() truy nh p n thu c tnh name v age m khng th truy xu t tr c ti p. L do l cc thu c tnh name v age c d ng

private trong l p Person nn khng th truy xu t tr c ti p trong cc l p d n xu t. Do , ta ph i truy xu t chng thng qua cc phng th c truy nh p public c a l p Person.

4.5.4 Chng trnh demo


Chng trnh 4.14d ch a hm main ch y minh ho vi c s d ng cc l p Person v Employee. y l n i dung c a t p tin Casestudy2.java Chng trnh 4.14d
package vidu.chuong4; public class Casestudy2 { // Hm main public static void main(String args[]) { // S d ng l p Person

Person myPerson = new Person(Vinh, 25); myPerson.show();

// S

d ng l p Employee

Employee myEmployee = new Employee(Vinh, 25, 300f); myEmployee.show(); // Tng lng theo m c nh myEmployee.addSalary(); myEmployee.show(); // Tng lng ln $50 myEmployee.addSalary(50f); myEmployee.show(); } }

Chng trnh 4.14d s hi n th n i dung nh sau:


Vinh is 25 years old! Vinh is 25 years old having a salary of Vinh is 25 years old having a salary of Vinh is 25 years old having a salary of $300/month! $330/month! $380/month!

Dng th nh t in ra dng thng bo theo phng th c show() c a l p Person. Dng th hai cng hi n th thng bo theo phng th c show() c a l p Employee c khai bo n p ch ng. Dng th ba hi n th thng bo sau khi tng lng theo m c nh (10%) t 300$

ln 330$. Dng th t hi n th thng bo sau khi tng lng thm m t l n n a v i l ng tng l 50$ t 330$ ln 380$.

T NG K T CHNG 4
N i dung chng 4 t p trung trnh by cc v n c b n lin quan n k thu t l p trnh h ng i t ng trong Java: M t l p trong java c khai bo v i t kho class, v i cc tnh ch t c th c l public, final ho c abstract. Khi khai bo m t l p l tr u t ng th cc phng th c c a n cng c khai bo l tr u t ng v ch khai bo d ng khun m u m khng c khai bo chi ti t. Khng th t o ra m t i tng t m t l p tr u t ng. C th khai bo m t l p k th a t m t l p khc thng qua t kho extends. M t l p java ch c th c k th a t nhi u nh t m t l p cha m thi. Trong k th a, l p con c th nh ngha l i (n p ch ng) cc phng th c c k th a t l p cha. M t giao ti p trong java c khai bo thng qua t kho interface. Cc thu c tnh c a giao ti p ph i l thu c tnh h ng (final) v static. Cc phng th c ch c khai bo d i d ng khun m u m khng c ci t chi ti t. C th khai bo m t giao ti p k th a t m t giao ti p khc cng b ng t kho extends. M t giao ti p trong java c th c k th a t nhi u giao ti p khc. M t giao ti p trong java ch c s d ng thng qua m t l p java ci t c th giao ti p . Khi , l p java ph i ci t chi ti t t t c cc phng th c c khai bo trong giao ti p. Trong m t l p java, c th khai bo nhi u phng th c c cng tn. Khi th c thi, chng trnh s t ng ch n phng th c c khun m u ki u tham s trng v i l nh th c hi n l nh tng ng.

CU H I V BI T P CHNG 4
1. Trong cc khai bo l p sau, khai bo no l ng: a. class myClass b. Class myClass c. public class MyClass d. Public class MyClass 2. Trong cc khai bo phng th c c a m t l p (khng tr u t ng) sau, khai bo no l ng: a. String getName{return name;}

b. String getName(){return name;} c. String getName(){return name;}; d. String getName(); 3. Trong cc khai bo phng th c c a m t l p tr u t ng sau, khai bo no l ng: a. abstract String getName{return name;} b. abstract String getName(){return name;} c. abstract String getName(){return name;}; d. abstract String getName(); 4. Trong cc khai bo m t giao ti p sau, khai bo no l ng: a. public abstract MyInterface{} b. public class MyInterface{} c. public interface MyInterface{} d. public interface MyInterface(); 5. Trong cc khai bo k th a l p sau, gi s Aclass v Bclass l cc l p c s n, khai bo no l ng: a. public class MyClass extends Aclass{} b. public class MyClass Extends Aclass{} c. public class MyClass extends Aclass, Bclass{} d. public class MyClass extends Aclass, extends Bclass{} 6. Trong cc khai bo k th a giao ti p sau, gi s Ainterface v Binterface l cc giao ti p c s n, khai bo no l ng: a. public interface MyInterface extends Ainterface{} b. public interface MyInterface Extends Ainterface{} c. public interface MyInterface extends Ainterface, Binterface{} d.
public interface Binterface{} MyInterface extends Ainterface, extends

7. Trong cc khai bo m t l p s d ng giao ti p sau, gi s Ainterface v Binterface l cc giao ti p c s n, khai bo no l ng: a. public class MyClass extends Ainterface{} b. public class MyClass implements Ainterface{} c. public class MyClass implements Ainterface, Binterface{} d. public Binterface{} 8.
class MyClass implements Ainterface, implements

Xt o n chng trnh ci t m t l p s d ng m t giao ti p sau:


public interface MyInterface{

public void show(String a); } // Khai bo l p s d ng giao ti p

public class MyClass implements MyInterface{ }

Khi , l p MyClass ch c duy nh t m t phng th c ci t chi ti t phng th c show c a giao ti p MyInterface. Trong cc cch ci t sau, cch no l ng: a. public int show(String a){ System.out.println(a);} b. public void show(){ System.out.println(Show!);} c. public void show(String a){ System.out.println(a);} d. public void show(String a, String b){ System.out.println(a+b);} 9. Xt o n chng trnh ci t php ton c ng v i cc s h ng c ki u khc nhau:
public class MyOperator { public static int add(int a, int b){return a+b;} public static float add(float a, float b){return a+b;} public static double add(double a, double b){return a+b;} public static String add(String a, String b){return a+b;} }

Khi ta g i l nh MyOperator.add(-5, 100), chng trnh s g i phng th c no? a. add(int, int) b. add(float, float) c. add(double, double) d. add(String, String) e. Thng bo l i 10. Cng v i l p MyOperator trong bi 9, khi ta g i l nh MyOperator.add(5.0d, 100f), chng trnh s g i phng th c no? a. add(int, int) b. add(float, float) c. add(double, double) d. add(String, String) e. Thng bo l i 11. Cng v i l p MyOperator trong bi 9, khi ta g i l nh MyOperator.add(abcd, 100f), chng trnh s g i phng th c no? a. add(int, int) b. add(float, float)

c. add(double, double) d. add(String, String) e. Thng bo l i 12. V s khc nhau gi a l p v giao ti p trong java, nh ng nh n nh no sau y l ng: a. L p c k
th a t th a t i a t m t l p khc, giao ti p c th nhi u giao ti p khc. k th a t cc l p. k

b. L p c th
th a t

giao ti p, nhng giao ti p khng c k

c. Thu c tnh c a l p c th
giao ti p ph i l h ng s

c tnh ch t b t k, thu c tnh c a v tnh.

d. Phng th c c a l p c th
c a giao ti p ch

c ci t chi ti t, phng th c c khai bo d ng khun m u.

13. Xt o n chng trnh khai bo hai l p k th a nhau nh sau:


public class Person { public person!);} } void show(){System.out.println(This is a

v:
public class Employee extends Person { public void show(int x){ System.out.println(This is the employee + x); } }

Khi , o n chng trnh sau s hi n th thng bo no?


public class Demo1 { public static void main(String args[]){ Employee myEmployee = new Employee(); myEmployee.show(); } }

a. This is a person!. b. This is the employee 0. c. Thng bo l i. d. Khng hi n thi g c . 14. Cng v i hai l p Person v Employee trong bi 14. o n chng trnh sau s hi n th thng bo no?
public class Demo2 {

public static void main(String args[]){ Employee myEmployee = new Employee(); myEmployee.show(10); } }

a. This is a person!. b. This is the employee 10. c. Thng bo l i. d. Khng hi n thi g c . 15. Vi t m t chng trnh khai bo m t l p v cc hnh ch nh t Rectangle. L p ny c hai thu c tnh c c b l chi u r ng v chi u di c a hnh. Vi t hai phng th c kh i d ng t ng minh cho l p ny: M t kh i d ng v i m t tham s ki u int, khi , chi u r ng v chi u di c thi t l p thnh gi tr tham s a vo (hnh vung). M t kh i d ng v i hai tham s ki u int tng ng l chi u r ng v chi u di. 16. Vi t m t giao ti p khai bo cc php ton c ng hai s , c ng hai xu, c ng xu v s . Sau vi t m t l p ci t giao ti p . 17. Vi t m t l p tr u t ng v cc hnh ph ng, trong khai bo cc phng th c tnh chu vi v di n tch c a hnh. Sau vi t ba l p k th a t l p tr u t ng l: l p hnh vung, l p hnh ch nh t v l p hnh trn. T thi t l p cc thu c tnh c c b c n thi t cho m i l p con v khai bo n p ch ng hai phng th c ban u trong m i l p con.

You might also like