Phần 3: Khái niệm về Overloading – Overriding – Interface - Exception trong Java



I – Overloading

- Trong một class có thể có nhiều phương thức cùng tên nhưng khác nhau về danh sách tham số (kiểu, số lượng) được gọi là overload.

- Ví dụ:

public void method(int x) {}
public void method(float x) {}
public int method(int y) {} // không hợp lệ

Các lời gọi method(5), method(5f) là khác nhau

II – Overriding
- Nếu lớp con có phương thức giống (tham số và kiểu trả về) phương thức lớp cha được gọi là verride.
- Phương thức override phải có quyền truy xuất >= phương thức bị override
- Phương thức override không được phép quăng loại trừ không hợp lệ đối với phương thức bị override
- Để gọi phương thức bị override của lớp cha ta dùng super.xxx(…) trong đó xxx(…) là tên phương thức.
- Ví dụ:

Class C
{
protected int add(int x, int y) throws IOException{}
}
Class C1 extends C
{
protected int add(int x, int y) throws IOException{} //?
public int add(int x, int y) throws FileNotFoundException{} //? public int add(int x, int y) throws Exception{} //? private int add(int x, int y) throws IOException{} //?
}

III – Interface
- Là bản khai báo các phương thức, biến để class nào thực hiện thì phải viết đầy đủ các phương thức này cũng như trong super interface.

- Khai báo interface:

<modifiers> interface <InterfaceName> [extends SuperInterface]
{
// Các khai báo phương thức và biến
}

- Thực hiện : sử dụng [implements <InterfaceName>]

- Ví dụ 1: class C implements Runnable, Serializable{…}

Runnable, Serializable : là các interface

- Các phương thức trong interface chỉ được phép dùng modifier public để định nghĩa.
- Không như abstract class, interface không cho phép viết một phương thức đầy đủ.
- Một class chỉ thừa kế một class duy nhất nhưng có thể thực hiện nhiều interface khác nhau.
- Nếu bỏ qua một số phương thức nào đó của interface thì class thực hiện phải được khai báo abstract

- Ví dụ 2:

interface ISecurity{
public boolean login(String account, String passworld);
}
interface IBAcount extends ISecurity{
public void guiTien(int money);
public void rutTien(int money);
}
class BankAccount implements IBAccount, Runnable{
public boolean login(String acc, String pass){…} // của ISecurity
public void guiTien(int money){…} // của IBAcount
public void rutTien(int money){…} // của IBAcount public void run(){…} // của Runnable
public void rutTienUSD(int usdMoney){…} // Phương thức mới
}

IV – Exception (LoạI trừ)
- Là lỗi xuất hiện trong quá trình chương trình thực hiện của đoạn code. Nếu không xử lý thì chương trình có thể bị dừng.

- Sau đây là một số loại trừ:
FileNotFoundException : Mở file không có
NullPointerException : Gọi phương thức khi đối tượng null
NumberFormatException : Chuyển chuỗi không phải số sang số
ArrayIndexOutOfBounds : Truy xuất phần tử ngoài phạm vi mảng,…

- Cơ chế bắt loại trừ như sau:

try{
// Code có khả năng xảy ra loại trừ [T]
}
catch(Exception1 e1){
// Xử lý loại trừ Exception1 [E1]
}
..
catch(ExceptionN eN){
// Xử lý loại trừ ExceptionN [EN]
}
finally{
// Xử lý bất chấp có loại trừ hay không [F]
}
// Xử lý sau loại trừ [S]

user posted image

- Quy trình hoạt động:
+ Thực hiện:
. Có loại trừ xảy ra
Có bắt : -> [Ei] -> [F] -> [S]
lKhông bắt : -> [F]
. Không có loại trừ : -> [F] -> [S]
+ Có thể chia loại trừ thành 2 loạI:
Các loại trừ con cháu của RuntimeException chỉ xảy ra trong khi chạy. Vì vậy không yêu cầu phải bắt mà vẫn dịch tốt.
Còn lại : yêu cầu phải bắt mới dịch được

- Ví dụ:

String[] numbers = {“abc”, “123”, “cdf”};
int i = 2;
try{
FileInputStream fis = new FileInputStream(“aaa.txt”);
Integer.parseInt(numbers[i]);
}catch(IOException ioe){
System.out.println(“Lỗi mở file !”);
}catch(NumberFormatException nfe){
System.out.println(“Numbers[“+i+”] không phải số !”);
}finally{
System.out.println(“Xong try-catch rồi !”);
}
System.out.println(“Biến number là số !”);

- Dùng throw new Exception để quăng ra loại trừ

pubic void method(String file) throws IOException{

throw new IOException(“Noi dung exception !”);

}
- Tạo lớp loại trừ mới

class InvalidException extends IOException{
public InvalidException(){
super(“Khong hop le !”);
}
public InvalidException(String msg){
super(msg);
}
}
--------------------

 

Post a Comment

Mới hơn Cũ hơn