Giao d in

Một phần của tài liệu Lập trình hướng đối tượng (Trang 27 - 31)

T khoá interface ã a khái ni m abstract i xa thêm m t b c n a. Ta có th ngh nó nh là m t l p abstract “thu n tuý”, nó cho phép ta t o ra m t l p thu n o, l p này ch g m t p các giao di n cho các l p mu n d n xu t t nó, m t interface c ng có th có các tr ng, tuy nhiên java t ng làm các tr ng này thành staticvà final

t o ra m t interface, ta dùng t khoá interface thay vì t khoá class. M t interface g m có 2 ph n: ph n khai báo và ph n thân, ph n khai báo cho bi t m t s thông tin nh : tên c a interface, nó có k th a t m t giao di n khác hay không. Ph n thân ch a các khai báo h ng, khai báo ph ng th c ( nh ng không có cài t). Gi ng nh m t l p ta c ng có th thêm b t public vào tr c nh ngh a c a interface. Sau ây là hình nh c a m t interface.

Nh ng do java t ng làm các tr ng thành final nên ta không c n thêm b t này, do v y ta có th nh ngh a l i giao di n nh sau:

Nh ng do java t ng làm các tr ng thành finalnên ta không c n thêm b t này

public interface StockWatcher

{

final String

sunTicker = "SUNW";

final String oracleTicker = "ORCL"; final String ciscoTicker = "CSCO";

void valueChanged(String tickerSymbol, double newValue); }

1. Ph n khai báo c a giao di n

T ng quát ph n khai báo c a m t giao di n có c u trúc t ng quát nh sau:

Public //giao di n này là công c ng

interface InterfaceName //tên c a giao di n

Extends SuperInterface //giao di n này là m r ng c a 1 giao di n khác

{

InterfaceBody }

//thân c a giao di n

Trong c u trúc trên có 2 ph n b t bu c ph i có ó là ph n interface vàInterfaceName, các ph n khác là tu ch n.

2. Ph n thân

Ph n thân khai báo các các h ng, các ph ng th c r ng ( không có cài t ), các ph ng th c này ph i k t thúc v i d u ch m ph y ‘;’, b i vì chúng không có ph n cài t

Chú ý:

1. T t c các thành ph n c a m t giao di n t ng là public do v y ta không c n ph i cho b t này vào.

2. Java yêu c u t t c các thành ph n c a giao di n ph i là public, n u ta thêm các b t khác nh private,protectedtr c các khai báo thì ta s nh n c m t l i lúc d ch 3. T t c các tr ng t ng là finalvà static, nên ta không c n ph i cho b t này vào.

3. Tri n khai giao di n

B i m t giao di n ch g m các mô t chúng không có ph n cài t, các giao di n c nh ngh a cho các l p d n xu t tri n khai, do v y các l p d n xu t t l p này ph i tri n khai y t t c các khai báo bên trong giao di n, tri n khai m t giao di n b n bao g m t khoá implements vào ph n khai báo l p, l p c a b n có th tri n khai m t ho c nhi u giao di n ( hình th c này t ng t nh k th a b i c a C++)

Ví d 1

public classStockApplet extendsApplet implements StockWatcher { .. .

public voidvalueChanged(String tickerSymbol, double newValue) {

if (tickerSymbol.equals(sunTicker)) { .. . }else if (tickerSymbol.equals(oracleTicker)) { .. . }else if (tickerSymbol.equals(ciscoTicker)) { .. . } } } Ví d 2

public interface MyInterface{

public voidadd(int x, int y);

} //Ho c

interface Interface_Const{

public static finaldouble price = 100.0;

public static finalint counter = 5; }

+ S d ng Interface trên

packageJavaContent;

public classUse_MyInterface implementsMyInterface,Interface_Const { public voidadd(int x, int y)

{System.out.println("Tong cua 2 so "+x+" + " + y+" la:"+ (x+y));}

public voidvolume(int x, int y, int z)

{ System.out.println("Tich cua 3 so "+x+" * " + y+"*"+z+" la:"+ (x*y*z)); }

public static voidmain(String args[])

{Use_MyInterface uu=newUse_MyInterface(); uu.add(4,8);

uu.volume(20,15,9);

System.out.println("Gia tri hang so price="+price); System.out.println("Gia tri hang so counter="+counter); }

}

Chú ý:

+ N u m t l p tri n khai nhi u giao di n thì các giao di n này c li t kê cách nhau b i d u ph y ‘,’

+ L p tri n khai giao di n ph i th c thi t t c các ph ng th c c khai báo trong giao di n, n u nh l p ó không tri n khai, ho c tri n khai không h t thì nó ph i c khai báo là abstract

+ Do giao di n c ng là m t l p tr u t ng do v y ta không th t o th hi n c a giao di n + M t l p có th tri n khai nhi u giao di n, do v y ta có l i d ng u này th c hi n hành vi k th a b i, v n không c java h tr

+ M t giao di n có th m r ng m t giao di n khác, b ng hình th c k th a

II. L p trong

Có th t m t nh ngh a l p này vào bên trong m t l p khác. u này c g i là l p trong. L p trong là m t tính n ng có giá tr vì nó cho phép b n g p nhóm các l p v m t logic thu c v nhau và ki m soát tính th y c c a các l p này bên trong l p khác. Tuy nhiên b n ph i hi u r ng l p trong không ph i là là h p thành

Ví d :

public class Stack {

privateVector items;

.. .//code for Stack's methods and constructors not shown...

public Enumeration enumerator() {

return newStackEnum();

}

class StackEnum implements Enumeration { int currentItem = items.size() - 1;

return (currentItem >= 0); }

public Object nextElement() {

if (!hasMoreElements())

thrownewNoSuchElementException(); else

return items.elementAt(currentItem--); }

} }

L p trong r t h u hi u khi b n b n mu n t o ra các l p u h p ( c bàn k khi nói v thi t k giao di n ng i dùng )

Bài 9. M NG, XÂU KÝ T , T P H P I. M ng

1. M ng 1 chi ua) Khai báo a) Khai báo

Cú pháp khai báo:

Một phần của tài liệu Lập trình hướng đối tượng (Trang 27 - 31)

Tải bản đầy đủ (PDF)

(55 trang)