Giao din ệ

Một phần của tài liệu Bài giảng về Java (Trang 62 - 64)

IX.1 C u trỳc c a giao di nấ

Trong Java khụng h tr tớnh đa th a k . Tuy nhiờn, Java h tr m t k thu t thay thỗ ợ ừ ế ỗ ợ ộ ỹ ậ ế và r t linh ho t, đú là cỏc interface hay cũn g i là cỏc giao di n.ấ ạ ọ ệ

Giao di n khụng ph i là m t class nh ng nú ch ra cỏc phệ ả ộ ư ỉ ương th c s đứ ẽ ược đ nh nghĩaị trong cỏc l p cài đ t nú. Cỏc l p cú s d ng t i cỏc phớ ặ ớ ử ụ ớ ương th c này ph i khai bỏo cài đ tứ ả ặ giao di n b ng t khúa implement.ệ ằ ừ

C u trỳc c a m t giao di n r t đ n gi n:ấ ủ ộ ệ ấ ơ ả public interface <tờn giao di n>ệ

{

//Danh sỏch cỏc phương th cứ }

T i l p cú cài đ t giao di n:ạ ớ ặ ệ

public class <tờn l p> implements <tờn giao di n>ớ ệ {

//Phõn thõn l p cú ch a đ nh nghĩa phớ ứ ị ương th c c a giao di nứ ủ ệ }

Vớ d :ụ

Trong l p Arrays c a Java cú phớ ủ ương th c sort dựng đ s p x p cỏc đ i tứ ể ắ ế ố ượng trong m t m ng. Tuy nhiờn, mu n s p x p độ ả ố ắ ế ược thỡ trong đ nh nghĩa l p c a cỏc đ i tị ớ ủ ố ượng này ph i cú cài đ t m t phả ặ ộ ương th c so sỏnh compareTo(Object objKhac). M r ng h n, t t cứ ở ộ ơ ấ ả cỏc l p mu n s d ng phớ ố ử ụ ương th c sort c a Array đ u ph i cài đ t phứ ủ ề ả ặ ương th c này trongứ đ nh nghĩa c a nú. Đi u này d n đ n vi c thi t k m t giao di n:ị ủ ề ẫ ế ệ ế ế ộ ệ

public interface Comparable {

int compareTo(Object objKhac); }

Phương th c compareTo nh n m t đ i tứ ậ ộ ố ượng khỏc làm tham s và là đ i tố ố ượng đem ra so sỏnh, k t qu so sỏnh bi u hi n qua m t s nguyờn. ế ả ể ệ ộ ố

T phiờn b n Java 5.0 (1.5), cỏc giao di n cú th đừ ả ệ ể ược xỏc đ nh cho m t ki u t ngị ộ ể ổ quỏt:

public interface Comparable<T> {

int compareTo(T objKhac); }

Vớ d cỏc l p mu n cài đ t giao di n Comparable<Employee> ph i cài đ t phụ ớ ố ặ ệ ả ặ ương th cứ

int compareTo(Employee objKhac);

T t c cỏc phấ ả ương th c khai bỏo trong interface m c đ nh là public nờn ta khụng c nứ ặ ị ầ khai bỏo public cho nú.

Bõy gi chỳng ta đ nh nghĩa:ờ ị x.compareTo(y) <0 n u x < yế x.compareTo(y) =0 n u x = yế x.compareTo(y) >0 n u x > yế

Trong interface ta đang xem xột thỡ nú ch cú m t phỉ ộ ương th c. Cỏc interface thứ ường cú nhi u phề ương th c, cỏc h ng s . Tuy nhiờn trong interface ta khụng th khai bỏo cỏc bi nứ ằ ố ể ế thành ph n và khụng th cài đ t n i dung c a cỏc phầ ể ặ ộ ủ ương th c. Cỏc interface cú th xem nhứ ể ư cỏc l p tr u tớ ừ ượng khụng cú thu c tớnh thành ph n tuy r ng chỳng cú nhi u đi m khỏc bi t.ộ ầ ằ ề ể ệ

Trong ph n sau đõy chỳng ta s cài đ t m t phầ ẽ ặ ộ ương th c compareTo cho vi c so sỏnhứ ệ cỏc đ i tố ượng Employee.

Khai bỏo cài đ t Comparable cho Employee:ặ class Employee implements Comparable

Gi s cỏc Employee đả ử ược so sỏnh thụng qua tiờu chớ Luong, ta cài đ t compareTo nhặ ư sau:

public int compareTo(Object objKhac) {

Employee other = (Employee) objKhac; // Chuy n ki uể ể if (Luong < other.Luong) return -1;

if (Luong > other.Luong) return 1; return 0;

}

Chỳ ý r ng cỏc phằ ương th c trong interface khụng khai bỏo public nh ng khi cài đ tứ ư ặ chỳng, nh t đ nh ta ph i cú khai bỏo public.ấ ị ả

Đ i v i phiờn b n Java 5.0, ta cú th cài đ t:ố ớ ả ể ặ

class Employee implements Comparable<Employee> {

public int compareTo(Employee objKhac) {

if (Luong < objKhac.Luong) return -1; if (Luong > objKhac.Luong) return 1; return 0;

} . . . }

Đ i v i l p Manager thỡ sao. Rừ ràng là m t đ i tố ớ ớ ộ ố ượng Manager v n cú th đẫ ể ược so sỏnh v i m t đ i tớ ộ ố ượng Employee v ti n lề ề ương. Tuy nhiờn n u ta cũng khai bỏo ch ng m tế ồ ộ phương th c compareTo() thỡ khụng đứ ược do vi ph m quy t c chuy n ki u:ạ ắ ể ể

class Manager extends Employee {

public int compareTo(Employee objKhac) {

Manager otherManager = (Manager) objKhac; // khụng được . . .

} . . . }

May m n là ta khụng c n làm đi u này vỡ tớnh k th a đó đ m b o Manager cài đ tắ ầ ề ế ừ ả ả ặ Comparable<Employee> ch khụng ph i Comparable<Manager>. Khi đ a m t đ i tứ ả ư ộ ố ượng Manager vào làm tham s so sỏnh, nú t đ ng đố ự ộ ược ộp sang ki u Employee. Vi c so sỏnh vỡể ệ th di n ra tho i mỏi gi a cỏc đ i tế ễ ả ữ ố ượng Employee và Manager v i nhau.ớ

IX.2 Cỏc tớnh ch t c a giao di nấ ủ

Khi s d ng interface ta c n chỳ ý m y đi m sau:ử ụ ầ ấ ể

• Giao di n khụng ph i là class nờn khụng dựng t khúa new đ t o m t đ iệ ả ừ ể ạ ộ ố tượng ki u giao di n:ể ệ

x = new Comparable(. . .); // L iỗ • Cú th khai bỏo m t bi n interfaceể ộ ế Comparable x; // OK

Bi n interface ph i tham chi u t i m t đ i tế ả ế ớ ộ ố ượng c a m t l p cú cài đ t interface đú.ủ ộ ớ ặ x = new Employee(. . .); // OK

• Cú th dựng toỏn t instanceof đ ki m tra xem m t đ i tể ử ể ể ộ ố ượng cú được cài đ tặ interface hay khụng: if (anObject instanceof Comparable) { . . . }

• Cỏc interface cũng cú th để ược k th aế ừ • Cú th khai bỏo cỏc h ng s trong interfaceể ằ ố public interface Comparable<Employee>

{

double greater = 1;

int compareTo(Employee other); }

Trong interface, khai bỏo “double greater =1” đượ ự ộc t đ ng hi u là:ể public static final double greater =1;

Cỏc l p cú cài đ t interface cũng t đ ng đớ ặ ự ộ ược th a k cỏc h ng s này. ừ ế ằ ố

• M t l p ch cú th k th a t m t l p khỏc trong khi cú th cài đ t nhi u giaoộ ớ ỉ ể ế ừ ừ ộ ớ ể ặ ề di n.ệ

Một phần của tài liệu Bài giảng về Java (Trang 62 - 64)

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

(151 trang)