Tớnh đa hỡnh trong Java

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

Tớnh đa hỡnh là m t kh năng c a OOP cho phộp m t phộ ả ủ ộ ương th c th c thi theo ngứ ự ữ c nh lỳc chả ương trỡnh đang ch y. Cho dựng là cựng m t tờn g i, th m chớ là cựng danh sỏchạ ộ ọ ậ tham s , phố ương th c v n đứ ẫ ược g i theo đỳng đ i tọ ố ượng s h u nú.ở ữ

Trong khi chỳng ta cài đ t tớnh ch t th a k c a OOP, c s c a tớnh đa hỡnh cũng đóặ ấ ừ ế ủ ơ ở ủ được cài đ t. Trong vớ d trờn, phặ ụ ương th c getLuong() đứ ược đ nh nghĩa c l p cha và l pị ở ả ớ ớ con, chỳng ta s xem nú đẽ ược g i nh th nào.ọ ư ế

VII.1 S ộp ki u và gỏn tham chi u đ i tự ế ố ượng

Trong quan h th a k , đụi khi cú s chuy n đ i vai trũ c a cỏc l p cha và con. Ta cúệ ừ ế ự ể ổ ủ ớ th gỏn tham chi u m t đ i tể ế ộ ố ượng c a l p con cho m t đ i tủ ớ ộ ố ượng c a l p cha. Trủ ớ ường h pợ ngượ ạc l i là khụng th . Đõy chớnh là th hi n tớnh đa hỡnh c a đ i tể ể ệ ủ ố ượng. M t đ i tộ ố ượng c aủ l p cha cú th đớ ể ược gỏn tham chi u t i b t kỳ l p con nào d n xu t t nú nh ng khụng ộpế ớ ấ ớ ẫ ấ ừ ư ki u sang l p con để ớ ược. Ngượ ạc l i, đ i tố ượng l p con khụng th đớ ể ược gỏn tham chi u t iế ớ m t đ i tộ ố ượng l p cha nh ng cú th chuy n ki u sang l p cha. ớ ư ể ể ể ớ

Vớ d :ụ

Employee me = new Employee("Nguyen Anh Minh", 50000, 2000, 10, 1); Employee you = new Employee("Nguyen Anh Tai", 52000, 2000, 10, 1); Manager boss = new Manager ("Nguyen Tan Minh", 80000, 1987, 12, 15); boss.setTienThuong(5000);

Manager boss1 = new Manager ("Nguyen Tan Phat", 81000, 1987, 12, 15); boss1.setTienThuong(15000);

boss = me; // khụng gỏn tham chiờu được me=boss1; //OK.

ho c:ặ

you = (Employee)boss; // Chuy n ki u OKể ể

boss1 = (Manager) me; // Cha khụng chuy n ki u sang con để ể ược

Th m chớ m t m ng cỏc đ i tậ ộ ả ố ượng Employee cú th để ược gỏn cho m t m ng cỏc đ iộ ả ố tượng Manager mà khụng c n chuy n ki u:ầ ể ể

Manager[] managers = new Manager[10]; Employee[] staff = managers; // OK

Tuy v y, s chuy n đ i này ch di n ra trong th i gian ch y chậ ự ể ổ ỉ ễ ờ ạ ương trỡnh. N u khi l pế ậ trỡnh ta vi t:ế

you = boss; // OK

you.setTienThuong(2000);// Khụng được

Lý do là vi c chuy n ki u ch x y ra lỳc chệ ể ể ỉ ả ương trỡnh ch y nờn khi biờn d ch “you”ạ ị v n là m t đ i tẫ ộ ố ượng Employee, nú khụng cú phương th c setTienLuong(). ứ

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

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

(151 trang)