Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
426 KB
Nội dung
LẬPTRÌNHJAVAChươngLỚP TRONG JAVA GV: Võ Hoàng Phương Dung Nội dung Các khái niệm lậptrình hướng đối tượng Khai báo lớp Các lớp lồng Lớp Abstract Gói Phạm vi truy cập Interface Thừa kế đa hình 2/25 Các khái niệm Đối tượng (Object) • Thuộc tính (fields) • Hành vi (methods) Rectangle Width: 50cm Height: 30cm Color: Yellow Draw() changeSize() 3/25 Các khái niệm Thuộc tính (fields) liệu trình bày đặc điểm đối tượng • Mọi đối tượng lớp phải có thuộc tính giá trị thuộc tính khác • Một thuộc tính đối tượng nhận giá trị khác thời điểm khác Ví dụ: đối tượng hình chữ nhật có thuộc tính chiều dài, chiều rộng 4/25 Các khái niệm Phương thức (method) cách đáp ứng chức tác động lên liệu đối tượng • Các phương thức xác định cách thức hoạt động đối tượng thực thi đối tượng cụ thể tạo Ví dụ: hoạt động chung lớp hình chữ nhật tính chu vi diện tích 5/25 Các khái niệm Lớp (Class) • Là tập hợp đối tượng loại • Là khuôn mẫu tạo đối tượng • Là kiểu liệu phần mềm Lớp: Rectangle Đối tượng: RectangleA Đối tượng: RectangleB 6/25 Các khái niệm Các tính chất lậptrình hướng đối tượng • Tính đóng gói • Tính thừa kế • Tính đa hình 7/25 Các khái niệm Tính đóng gói • Đóng gói tiến trình che giấu việc thực thi chi tiết đối tượng • Giới hạn quyền truy cập đến thành phần đối tượng • Cơ chế cho việc che dấu thông tin 8/25 Các khái niệm Thừa kế (Inheritance) • Xây dựng lớp (subclass) từ lớp cũ (superclass) • Lớp có tất thuộc tính phương thức lớp cũ thêm vào số đặc tính riêng khác • Các lớp định nghĩa lại phương thức thừa kế để xử lý thuộc tính riêng chúng • Ví dụ: Lớp xe đạp leo núi lớp xe đạp đua lớplớp xe đạp Lớp xe đạp gọi lớp cha 9/25 Các khái niệm Tính đa hình • Phương thức tên thực khác đối tượng, lớp khác • Ví dụ: hai lớp Hình chữ nhật hình tròn có phương thức tính chu vi, diện tích Nhưng cách tính chu vi đối tượng hình chữ nhật hình tròn lại khác 10/25 abstract class MyAbstractClass { abstract void callme(); void callmetoo() { System.out.println(“Day khong phai abstract"); } } class B extends MyAbstractClass { void callme() { System.out.println(“Thuc thi lop B"); } } public class Main { public static void main(String args[]) { B b = new B(); b.callme(); b.callmetoo(); } } 41/25 Gói (Package) Là chứa lớp interface Trong Java, gói thể thư mục Tác dụng • Nhóm thành phần liên quan • Giới hạn truy cập từ thành phần bên • Tổ chức code dễ quản lý 42/25 Gói (Package) Khai báo gói package tên_gói; Khai báo gói đa cấp package pkg1[.pkg2[.pkg3]]; Ví dụ package graphics; public class Rectangle{ … public double calculateArea() { return width*height; } } 43/25 Gói (Package) Truy cập thành phần thuộc gói • Sử dụng tên: graphics.Circle myCircle = new graphics.Circle(); • Sử dụng câu lệnh import để nạp thành phần import graphics.Rectangle; Rectangle myRectangle = new Rectangle(); • Sử dụng import để nạp toàn gói import graphics.*; Circle myCircle = new Circle(); Rectangle myRectangle = new Rectangle(); 44/25 Gói (Package) Quản lý code • Khai báo gói • Các câu lệnh import • Khai báo thành phần package MyPack; import java.util.Date; public class Main { public static void main(String args[]) { System.out.println(new Date()); } } 45/25 Phạm vi truy cập Cách khai báo [modifier] class ten_lop{ [modifier] dataType ten_thuoctinh; [modifier] returnedValue ten_phuongthuc{ … } } 46/25 Phạm vi truy cập Java có phạm vi truy cập cho thành phần • public: truy cập tất thành phần khác • private: truy cập thành phần lớp • protected: truy cập lớp • default (không khai báo): truy cập thành phần gói 47/25 Phạm vi truy cập Vị trí & phạm vi truy cập 48/25 Phạm vi truy cập o Modifier Alpha 49/25 Interface Khai báo [modifier] interface name { return-type method-name1(parameter-list); return-type method-name2(parameter-list); type final-varname1 = value; type final-varname2 = value; // return-type method-nameN(parameter-list); type final-varnameN = value; } Các biến ngầm định là: public, static, final 50/25 Interface Ví dụ interface MyInterface{ void callback(int param); } 51/25 Interface Tạo class từ interface [modifier] class classname [extends superclass] [implements interface [,interface ]] { // class-body } Trong Java, không cho phép thừa kế từ nhiều superclass thừa kế từ nhiều interface 52/25 Interface Ví dụ interface MyInterface { void callback(int param); } class Client implements MyInterface{ public void callback(int p) { System.out.println(“Call:" + p); } } public class Main { public static void main(String args[]) { MyInterface c = new Client(); c.callback(42); } } 53/25 Interface Nếu class thực thi interface không đầy đủ lớp phải lớp abstract Ví dụ interface MyInterface { void callback(int param); void show(); } abstract class Incomplete implements MyInterface { int a, b; public void show() { System.out.println(a + " " + b); } } 54/25 Interface Interface thừa kế interface IntefaceA { void meth1(); void meth2(); } interface IntefaceB extends IntefaceA { void meth3(); } 55/25 ... chúng • Ví dụ: Lớp xe đạp leo núi lớp xe đạp đua lớp lớp xe đạp Lớp xe đạp gọi lớp cha 9/25 Các khái niệm Tính đa hình • Phương thức tên thực khác đối tượng, lớp khác • Ví dụ: hai lớp Hình chữ... truy cập 22/25 Các lớp lồng Java cho phép định nghĩa lớp bên lớp khác Cấu trúc class OuterClass { static class StaticNestedClass { } class InnerClass { } } 23/ 25 Các lớp lồng Ví dụ class... outer_x); } } void showy() { System.out.println(y); } } 25/25 Thừa kế Tạo lớp từ lớp tồn • Lớp gọi lớp (subclass) • Lớp cũ gọi lớp cha (superclass) Cú pháp: class subClass extends superClass{ }