Get Started. It's Free
or sign up with your email address
JAVA by Mind Map: JAVA

1. ABSTRACT CLASS & INTERFACE

1.1. Abstraction

1.1.1. chỉ quan tâm đến chức năng, không cần quan tâm đến các xử lý chi tiết.

1.1.2. Trong java, tính trừu tượng thể hiện qua abstract class và interface

1.2. Abstract class

1.2.1. Không thể tạo được đối tượng

1.2.2. 1 class có ít nhất 1 phương thức abstract thì chắc chắn lớp đó phải là abstract class ( nhưng ngược lại thì không)

1.2.3. Abstract class thì có thể chứa phương thức non-abstract

1.2.4. Abstract class không thể đi kèm với từ khóa final

1.2.5. Class abstract con extends từ class abstract cha thì không cần ghi đè các phương thức abstract của cha

1.2.6. Từ khóa private không dùng cho phương thức abstract

1.3. Interface

1.3.1. Không thể tạo được đối tượng

1.3.2. Các trường trong interface đều là hằng số

1.3.3. Tất cả các phương thức đều là abstract

1.3.4. Hỗ trợ đa kế thừa ( 1 interface có thể extends từ nhiều interface khác)

1.3.5. Không tạo được constructor

2. STATIC, ACCESS MODIFIER

2.1. Static

2.1.1. Khái niệm:

2.1.1.1. sử dụng để khai báo các thuộc tính cho class. Biến (hoặc phương thức) static là thuộc về class chứ không phải thuộc về object. => static là vùng nhớ duy nhất cho tất cả các đối tượng. => Khối static sẽ chạy trước hàm main => có thể áp dụng từ khóa static với biến , phương thức, khối, class lồng nhau.

2.1.2. Mục tiêu

2.1.2.1. Tiết kiệm vùng nhớ

2.1.2.2. không cần new ra đối tượng nhưng vẫn có thể sử dụng được phương thức và thuộc tính static

2.1.2.3. Giúp xây dựng những tiện ích

2.1.3. Ràng buộc khi sử dụng static

2.1.3.1. Phương thức static chỉ gọi được các phương thức và thuộc tính static

2.1.3.2. Phương thức non-static có thể gọi dduocj các phương thức và thuộc tính static

2.1.3.3. Phương thức static không thể gọi được các phương thức và thuộc tính static

2.1.3.4. Không thể sử dụng từ khóa this và super cho phương thức static

2.1.4. 2 cách gán giá trị cho biến static

2.1.4.1. Gán ngay khi vừa khởi tạo

2.1.4.2. Sứ dụng khối static

2.2. Các loại biến

2.2.1. Local ( biến cục bộ ) - nằm trong phương thức, constructor, khối block{}

2.2.2. Instance ( biến đối tượng) - là thuộc tính non-static: nằm ngoài constructor, khối block{}

2.2.3. Static (biến của class) - được khai báo thông qua từ khóa static : nằm ngoài phương thức, constructor, khối block{}

2.3. Tính báo đóng

2.3.1. là 1 quá trình gói mã code và dữ liệu lại với nhau thành 1 đơn vị duy nhất.

2.3.2. Tất cả các thuộc tính phải để private và phải có getter/setter tương ứng.

2.3.3. Giúp bảo mật thông tin, chỉ show ra nhừng thông tin cần thiết, giúp dữ liệu dduocj bảo mật và chính xác

2.3.4. Thùy chỉnh chỉ đọc (getter) hoặc chỉ ghi (setter)

2.3.5. Kiểm soát dữ liệu

2.4. Access modifier

2.4.1. Có 4 phạm vi truy cập và 3 từ khóa mô tả phạm vi truy cập

2.4.2. Phạm vi truy cập

2.4.2.1. private: class

2.4.2.2. default: class, package

2.4.2.3. protected: class, package, outside package( inheritance)

2.4.2.4. public: all

2.4.3. 1 class chỉ có thể sử dụng 2 cấp độ kiểm soát truy cập ( default or public), các thành viên có thể sử dụng cả 4 cấp độ kiểm soát truy cập.

2.5. Nested class ( lớp lồng nhau)

2.5.1. Inner class

2.5.2. Static nested class

3. OOP , CLASS AND OBJECT

3.1. Constructor

3.1.1. Là phương thức đặc biệt được sử dụng để khởi tạo các đối tượng cúa 1 lớp.

3.1.2. có tên trùng với tên của lớp

3.1.3. 1 class có thể có nhiều constructor

3.1.4. nếu không khai báo thì mặc định lớp đó có 1 constructor không có tham số

3.1.5. Không có dữ liệu trả về

3.1.6. 1 constructor có thể gọi 1 và chỉ 1 constructor khác, nhưng nó phải được gọi đầu tiên trong body

3.2. Các phương pháp lập trình chính

3.2.1. Lập trình tuyến tính

3.2.2. Lập trình hướng cấu trúc

3.2.3. Lập trình hướng đối tượng

3.3. OOP (Object Oriented Programing)

3.3.1. là 1 phương pháp, một kỹ thuật lập trình ánh xạ được đối tượng ở thế giới thực vào trong lập trình

3.3.2. so sánh

3.3.2.1. POP(Proceduce Oriented programing) - Lấy hành động làm trung tâm - Tếp cận từ trên xuống - Data security có nguy cơ khi dữ liệu di chuyển tự do trong chương trình, code reusability không đạt được, khiến cho việc lập trình trở nên dài và khó hiểu. Các chương trình lớn dẫn đến nhiều lỗi hơn và nó làm tăng thời gian gỡ lỗi.

3.3.2.2. OOP - Lấy dữ liệu làm trung tâm - Tiếp cận từ dưới lên - Data security đảm bảo hơn, giải quyết được vấn đề về code reusability.

3.4. Class

3.4.1. Là 1 blueprint(kế hoạch) hay prototype (nguyên mẫu) xác định thuộc tính và các phương thức chung cho tất cả các đối tượng cùng loại.

3.4.2. Sử dụng từ khóa "class" để khai báo

3.4.3. Chỉ được khai báo 1 lần trong cùng 1 package

3.5. Object

3.5.1. Là 1 thể hiện của class, là các đối tượng mô tả các thực thể ở thế giới thực

3.5.2. Sử dụng từ khóa "new" để khởi tạo

3.5.3. Đối tượng có thể được khởi tạo nhiều lần

4. INTRODUCTION TO JAVA

4.1. Là ngôn ngữ lập trình hướng đối tượng, hiện đại, bảo mật. Slogan: “Write one, run anywhere” - viết một lần chạy nhiều nơi, nghĩa là chỉ cần viết một lần trên window,nhưng chương trình vẫn có thể chạy trên Linux, Android. Giải thích cơ chế: tất cả là nhờ JVM biên dịch Bytecode thành mã máy tương ứng. Quy trình để java có thể "chạy ở mọi nơi" : + Bước 1: Từ file " .java" nhờ java compiler biên dịch ra file " .class" chứa Bytecode. + Bước 2: Từ file " .class" nhờ JVM thông dịch từ Bytecode sang mã máy, nhờ đó máy hiểu và thực thi.

4.2. 4 nền tảng

4.2.1. Java SE (Standard Edition) – Java core (phiên bản chuẩn & cơ bản của Java).

4.2.2. Java EE (Enterprise Edition) – phát triển web.

4.2.3. Java ME (Micro Edition) – phát triển ứng dụng mobie & các thiết bị nhỏ.

4.2.4. Java FX (java form experience) – phát triển các ứng dụng lên quan đến mạng

4.3. JDK (Java Development Kit)

4.3.1. bộ công cụ để chạy được 1 ứng dụng Java hoàn chỉnh

4.4. JRE (Java Runtime Environment)

4.4.1. môi trường để thực thi Java.

4.5. JVM (Java Virtual Machine)

4.5.1. chuyển từ file.class -> mã máy

4.6. Kiểu dữ liệu

4.6.1. Kiểu nguyên thủy

4.6.1.1. Kiểu luận lý (boolean)

4.6.1.2. Kiểu số

4.6.1.2.1. byte: 1 byte

4.6.1.2.2. short: 2 byte

4.6.1.2.3. int: 4 byte

4.6.1.2.4. long: 8 byte

4.6.1.2.5. char: 2 byte

4.6.1.2.6. float: 4 byte

4.6.1.2.7. double: 8 byte

4.6.2. Kiểu đối tượng

4.6.2.1. String

4.6.2.2. Array

4.7. Qui tắc đặt tên

4.7.1. Tên package: snake_case

4.7.2. Tên class: PascalCase

4.7.3. Tên phương thức, biến: camelCase

4.7.4. Khai báo hằng: final CONST_VARIABLE_NAME = value

5. INHERITANCE & POLIMORPHISM

5.1. INHERITANCE

5.1.1. Khái niệm

5.1.1.1. Cho phép lớp con có thể sử dụng các đặc điểm và hành vi của lớp cha ( bản chất gọi là coppi code)

5.1.2. Mục tiêu

5.1.2.1. Tái sử dụng mã code

5.1.2.2. Đạt được tính đa hình

5.1.3. Đặc điểm

5.1.3.1. Lớp con không thể kế thừa constructor của lớp cha => gọi constructor của cha thông qua từ khóa super

5.1.3.2. Trong java không có đa kế thừa ( đối với class) => Vì các lớp cha có thể trùng tên phương thức, chương trình sẽ không hiểu lớp con sẽ kế thừa phương thức nào khi gọi đến.

5.1.3.3. Những tài sản private không thể được kế thừa

5.1.4. Từ khóa supper

5.1.4.1. Là đối tượng giúp hỗ trợ gọi phương thức, thuộc tính và constructor của lớp cha gần nó nhất.

5.1.5. Từ khóa final

5.1.5.1. nếu đặt ở biến => Khai báo hằng

5.1.5.2. Nếu đặt ở phương thức => không cho ghi đè ( override)

5.1.5.3. Nếu đặt ở class => biến class đó thành vô sinh (không cho class khác kế thừa)

5.1.6. Lớp Object

5.1.6.1. Là cha của tất cả các class trong java

5.1.6.2. toString() : Trả về chuỗi thông tin của đối tượng

5.1.6.3. equals() : so sánh 2 đối tượng

5.2. POLIMORPHISM

5.2.1. Khái niệm

5.2.1.1. 1 hành động nhưng nó có thể thực hiện nhiều cách khác nhau tùy vào ngữ cảnh

5.2.2. Overriding( ghi đè)

5.2.2.1. Là cơ chế cho phép lớp con định nghĩa lại nội dung các phương thức trước đó của lớp cha

5.2.2.2. Phương thức phải cùng tên, cùng danh sách tham số, cùng kiểu dữ liệu trả về.

5.2.2.3. Access modifier của lớp con phải có level lớn hơn hoặc bằng lớp cha

5.2.2.4. Xảy ra trong class, có mối quan hệ is-a

5.2.2.5. Đa hình lúc runtime

5.2.3. Overloading

5.2.3.1. Là cơ chế cho phép 1 lớp có khả năng định nghĩa ra nhiều phương thức cùng tên nhưng khác nhau về tham số truyền vào ( kiểu dữ liệu, số lượng)

5.2.3.2. Xảy ra trong cùng 1 class

5.2.3.3. Đa hình lúc complie

5.3. Ép kiểu

5.3.1. Ngầm định

5.3.1.1. Thực hiện bởi trình biên dịch, lâp trình viên không cần ép kiểu: con -> cha

5.3.2. Tường minh

5.3.2.1. Lập trình viên phải chủ động ép kiểu ( nếu không sẽ bị lỗi complie): cha -> con

5.3.3. Toán tử instanceOf

5.3.3.1. được sử dụng để kiểm tra một đối tượng có phải là thể hiện của 1 kiểu dữ liệu cụ thể không ( lớp, lớp con, interface)

6. ARRAY & LOOP

6.1. ARRAY

6.1.1. Khái niệm

6.1.1.1. Các phần tử liên tục nhau trong bộ nhớ

6.1.1.2. Truy xuất phần tử thông qua chỉ số index

6.1.1.3. Kiểu dữ liệu của các phần tử trong mảng phải giống nhau.

6.1.1.4. Không thể co giãn được vùng nhớ

6.1.2. Khai báo và khởi tạo mảng

6.1.2.1. dataType[ ] arrayName = new dataType[array.length];

6.1.2.2. dataType[ ] arrayName = new dataType[ ] {element 1, element 2,… element n};

6.1.2.3. dataType arrayName[ ] = new dataType[ ] {element 1, element 2,… element n};

6.1.3. Mảng 2 chiều

6.1.3.1. Là mảng 1 chiều nhưng mỗi phần tử trong mảng là mảng 1 chiều.

6.1.4. Mảng n chiều

6.1.4.1. Là mảng 1 chiều nhưng mỗi phần tử của mảng là mảng n-1 chiều

6.1.5. Xuất mảng

6.1.5.1. System.out.println(Array.toString( array)

6.2. LOOP

6.2.1. for: Thường khi biết số lần lặp

6.2.2. while: thường không biết số lần lặp

6.2.3. do-while: Lặp ít nhất 1 lần, dùng cho trường hợp kiểm tra dữ liệu người dùng

7. METHOD

7.1. Khái niệm

7.1.1. gom những đoạn mã thường xuyên sử dụng lại với nhau => tí sử dụng code, chỉnh sửa code dễ dàng hơn.

7.2. Khai báo

7.2.1. access modifier static/non-static returnType methodName(list parameter)

7.3. Tham trị, tham chiếu

7.3.1. Tham trị: giá trị sẽ không thay đổi khi ra khỏi phương thức

7.3.2. tham chiếu: miền giá trị thay đổi khi ra khỏi phương thức