intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng lập trình java - Bài 3

Chia sẻ: Nguyen Van Nam | Ngày: | Loại File: PDF | Số trang:11

122
lượt xem
36
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo bài giảng lập trình java - Lê Đình Thanh , bộ môn mạng và truyền thông máy tính , khoa công nghệ thông tin - Bài 3 Giao diện và kế thừa, đây là tài liệu hấp dẫn dành cho các bạn có thêm nhiều kiến thức và nguồn kinh nghiệm phong phú về giao diện và kế thừa.

Chủ đề:
Lưu

Nội dung Text: Bài giảng lập trình java - Bài 3

  1. Bài gi ng L P TRÌNH JAVA Lê ðình Thanh B môn M ng và Truy n thông Máy tính Khoa Công ngh Thông tin Trư ng ð i h c Công ngh , ðHQGHN Lê ðình Thanh, Giao di n và k th a Bài 3 Giao di n, k th a Lê ðình Thanh, Giao di n và k th a
  2. N i dung • Giao di n • K th a ða hình • L p o, phương th c o • Lê ðình Thanh, Giao di n và k th a Giao di n Giao di n là phương ti n ñ giao ti p • ð “l p ghép” các môñun ph n m m ñư c v i nhau, các • môñun ph i “kh p” v i nhau v giao di n. • T i sao c n giao di n? • M i nhóm phát tri n m t s mô ñun, không ph i quan tâm ñ n mã bên trong c a các mô ñun do nhóm khác phát tri n, ch c n các nhóm thông nh t v i nhau v giao di n • Phát tri n các môñun x lý chuyên nghi p và bán cho các nhà phát tri n ph n m m, ví d thư vi n ñ h a. Lê ðình Thanh, Giao di n và k th a
  3. Giao di n trong Java ðư c ñ nh nghĩa tương t l p, nhưng ch bao g m các • h ng s và ch ký phương th c. KHÔNG có thân phương th c. • Không có th hi n. Ch ñư c cài ñ t và m r ng. • public interface OperateCar { // khai báo h ng, n u có // ch ký các phương th c int turn(Direction direction, double radius, double startSpeed, double endSpeed); int signalTurn(Direction direction, boolean signalOn); } Lê ðình Thanh, Giao di n và k th a Cài ñ t giao di n M t l p có th cài ñ t nhi u giao di n • public class OperateBMW760i implements OperateCar { // cài ñ t thân các phương th c int signalTurn(Direction direction, boolean signalOn) { //b t/t t ñèn trái //b t/t t ñèn ph i } // các phương th c khác không cài ñ t phương th c c a giao di n } Lê ðình Thanh, Giao di n và k th a
  4. M r ng giao di n • M t giao di n có th m r ng nhi u giao di n khác public interface GroupedInterface extends Interface1, Interface2, Interface3 { double E = 2.718282; void doSomething (int i, double x); int doSomethingElse(String s); } Lê ðình Thanh, Giao di n và k th a S d ng giao di n Giao di n ñư c s d ng như m t ki u • Các ñ i tư ng gán cho bi n giao di n ph i thu c l p cài • ñ t giao di n public interface I {} public class A implements I {} public class B {} A a = new A(); B b = new B(); I i = (I) a; //ñúng I i2 = (I) b; //sai Lê ðình Thanh, Giao di n và k th a
  5. K th a •M t l p có th ñư c d n xu t (derived) t l p khác, và do v y k th a (inherit) m i trư ng và phương th c c a l p ñó • L p ñư c k th a ñư c g i là l p cha (superclass, parent class) ho c l p cơ s (base class) • L p k th a ñư c g i là l p con (subclass, child class) ho c l p d n xu t (derived class) ho c l p m r ng (extended class) •Trong java, t t c các l p ñ u ñư c d n xu t t Object. Quan h k th a t o thành cây hay c u trúc phân c p. Lê ðình Thanh, Giao di n và k th a K th a và tính kh ki n • K th a và tính kh ki n • N u l p cha và l p con trong cùng gói, l p con k th a M I trư ng/phương th c public, protected và package-private c a l p cha • N u l p cha và l p con các gói khác nhau, l p con k th a các trư ng/phương th c public và protected. • L p con không k th a các trư ng/phương th c private t l p cha Lê ðình Thanh, Giao di n và k th a
  6. Ch ng/che trư ng/phương th c Trư ng l p con cùng tên trư ng c a l p cha s che trư ng • c a l p cha. Phương th c tĩnh c a l p con có ch ký trùng phương • th c tĩnh c a l p cha s che phương th c l p cha Phương th c không tĩnh c a l p con có ch ký trùng • phương th c không tĩnh c a l p cha s ch ng phương th c l p cha Lê ðình Thanh, Giao di n và k th a Chuy n ki u trong s d ng ñ i tư ng Có th s d ng ñ i tư ng l p cha ñ tham chi u ñ n m t ñ i • tư ng l p con (chuy n ki u ng m ñ nh) • Object obj = new MountainBike(); • Bicycle byc = new MountainBike(); Không ñư c s d ng ñ i tư ng l p con ñ tham chi u ñ n ñ i • tư ng l p cha • MountainBike mbike = new Bicycle(); //sai N u mu n s d ng ñ i tư ng l p con ñ tham chi u ñ n ñ i • tư ng l p cha ñang tham chi u ñ n ñ i tư ng l p con, ph i có l nh chuy n ki u rõ ràng • MountainBike mbike2 = byc; //l i MountainBike mbike3 = (MountainBike) byc; //ok n u byc ñang • tham chi u ñ n ñ i tư ng MountainBike. Lê ðình Thanh, Giao di n và k th a
  7. Ki m tra ki u c a m t ñ i tư ng • if (obj instanceof Class) if (obj instanceof MountainBike) { MountainBike myBike = (MountainBike) obj; } Lê ðình Thanh, Giao di n và k th a ða hình ða hình (polymorphism): Nhi u d ng/ki u khác nhau c a m t ñ i • tư ng. Ch ng phương th c, chuy n ki u ng m ñ nh là cơ s c a ña hình • • ff Bicycle bike01, bike02, bike03; bike01 = new Bicycle(20, 10, 1); bike02 = new MountainBike(20, 10, 5, "Dual"); bike03 = new RoadBike(40, 20, 8, 23); bike01.printDescription(); bike02.printDescription(); bike03.printDescription(); Lê ðình Thanh, Giao di n và k th a
  8. super – ð i di n c a l p cha T khóa super ñư c s d ng trong cài ñ t l p con ñ th c hi n các vi c sau: • • Truy c p các phương th c c a l p cha ñã b ch ng Truy c p các trư ng c a l p cha ñã b che • Thay cho phương th c t o l p cha • public class Superclass { public void printMethod() { System.out.println("Printed in Superclass."); } } public class Subclass extends Superclass { public void printMethod() { super.printMethod(); System.out.println("Printed in Subclass"); }} public class SubSubClass extends Subclass { public void printMethod() { //H i: G i printMethod() c a Superclass như th nào? } Lê ðình Thanh, Giao di n và k th a super – ð i di n c a l p cha T khóa super ñư c s d ng trong cài ñ t l p con ñ th c hi n các vi c • sau: Truy c p các phương th c c a l p cha ñã b ch ng • Truy c p các trư ng c a l p cha ñã b che • • Thay cho phương th c t o l p cha public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) { super(startCadence, startSpeed, startGear); seatHeight = startHeight; } N u phương th c t o c a l p con không g i phương th c t o c a l p cha m t cách rõ ràng thì phương th c t o không ñ i super() c a l p cha ñư c g i ng m ñ nh. Lê ðình Thanh, Giao di n và k th a
  9. final – Ngăn vi c k th a và ch ng ð ch ñ nh m t phương th c không th b ch ng l p con, s • d ng t khóa final trư c ch ký phương th c • C n thi t cho phương th c không nên thay ñ i mã ñ ñ m b o tính nh t quán ð ch m t l p không th k th a, s d ng t khóa final trư c • ñ nh nghĩa l p • C n ñ t o các l p b t bi n, ví d String class ChessAlgorithm { enum ChessPlayer { WHITE, BLACK } final ChessPlayer getFirstPlayer() { return ChessPlayer.WHITE; } } Lê ðình Thanh, Giao di n và k th a L p o, phương th c o L p o là l p ñư c ñ nh nghĩa v i t khóa abstract. L p o • không có th hi n. • S d ng làm l p cha Phương th c o là phương th c ñư c ñ nh nghĩa v i t • khóa abstract và không có cài ñ t • Cài ñ t phương th c o ñư c th c hi n l p con v i phương th c ch ng • N u l p con v n không cài ñ t thì phương th c ch ng cũng ph i là o • L p ch a phương th c o ph i là l p o Lê ðình Thanh, Giao di n và k th a
  10. S d ng l p o Khi có nhi u l p gi ng nhau m t s trư ng và phương • th c (c ch ký và thân), và có m t s phương th c cùng ch ký nhưng nhưng khác nhau v thân • T o l p cơ s o v i • Các trư ng và phương th c chung ñư c ñ nh nghĩa bình thư ng • Các phương th c gi ng nhau ch ký nhưng khác thân là các phương th c o Lê ðình Thanh, Giao di n và k th a L p o, phương th c o – Ví d abstract class GraphicObject { int x, y; void moveTo(int newX, int newY) {x = newX; y = newY; } abstract void draw(); abstract void resize(); } class Circle extends GraphicObject { void draw() { ... } void resize() { ... } } class Rectangle extends GraphicObject { void draw() { ... } void resize() { ... } } Lê ðình Thanh, Giao di n và k th a
  11. Câu h i ki m tra public class ClassA { public void methodOne(int i) { } public void methodTwo(int i) { } public static void methodThree(int i) { } public static void methodFour(int i) { } } public class ClassB extends ClassA { public static void methodOne(int i) { } public void methodTwo(int i) { } public void methodThree(int i) { } public static void methodFour(int i) { } } Phương th c nào ch ng phương th c l p cha? • Phương th c nào che phương th c l p cha? • V n ñ gì v i các phương th c khác? • Lê ðình Thanh, Giao di n và k th a Ti p theo S và xâu Lê ðình Thanh, Giao di n và k th a
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0