Overload Là Gì

  -  

Overload là gì ?

Overload - Nạp ông xã phương thức dễ dàng và đơn giản là gồm vài thủ tục trùng thương hiệu nhưng khác biệt về đối số. Cài ông xã phương thức chất nhận được ta tạo những phiên bạn dạng của một phương thức, từng phiên bạn dạng chấp thừa nhận một list đối số không giống nhau, nhằm mục đích tạo dễ ợt cho việc gọi phương thức.

Bạn đang xem: Overload là gì

Nạp ông xã phương thức Overload được thực hiện để nhận được tinh nhiều hình trên compile time.

Ví dụ:

class Calculation void sum(int a, int b) System.out.println(a + b); void sum(int a, int b, int c) System.out.println(a + b + c);

Các giải pháp nạp ông xã overload

Thay đổi số lượng tham số

Ví dụ:

class Sum void sum(int a, int b) System.out.println(a + b); void sum(int a, int b, int c) System.out.println(a + b + c); Thay đổi loại trả về của tham số

Ví dụ:

class Sum void sum(int a, int b) System.out.println(a + b); void sum(int a, double b) System.out.println(a + b);

Tự cồn ép mẫu mã trong hấp thụ chồng

Kiểu dữ liệu của đối số truyền vào được chuyển đổi sang kiểu tài liệu khác (tự rượu cồn ép kiểu) nếu giá trị của đối số đó không phù hợp với kiểu dữ liệu của tham số đã được đinh nghĩa.

Ví dụ phương thức sum(int x, double y) nghỉ ngơi ví dụ trên khi được truyền tham số như sau sum(10, 20) thì giá trị tham số thứ 2 được truyền vào là int đã được tự động hóa ép kiểu dáng sang thứ hạng double.Quy tắc nghiền kiểu: Được tự động ép về thứ hạng dữ liệu to hơn và ưu tiên gần nhất kiểu dữ liệu được nghiền theo máy tự hình sau:

*

Theo hình trên thì mẫu mã byte hoàn toàn có thể ép sang các kiểu lớn hơn nó như short, int, float, long, double cơ mà nó đã ưu tiên thứ hạng short. Hoặc dạng hình int rất có thể ép sang loại float, long, double nhưng nó sẽ ưu tiên ép sang đẳng cấp long do long ngay gần nó hơn so với 2 loại còn lại.

Ví dụ:

class Sum void sum(float a, float b) System.out.println("First method will be call"); void sum(long a, long b) System.out.println("Second method will be call"); public static void main(String<> args) Sum s = new Sum(); s.sum(10, 20); Kết trái in ra sẽ là "Second method will be call" có nghĩa là hàm sum vật dụng 2 sẽ được gọi vị tham số truyền vào là hình dáng int, nó đã ưu tiên xay sang kiểu lớn hơn nó và có giá trị sớm nhất nó, ở đây là kiểu long.Từ đó ta có ta rất có thể suy ra là hình dáng double ko thể tự động ép kiểu.

Nạp chồng phương thức khởi tạo

Xét trường hòa hợp ta có những hàm khởi tạo chồng với vận động khởi sản xuất giống nhau với chỉ khác nhau ở phần xử lý những kiểu đối số. Ta sẽ không muốn chép đi chép lại phần mã khởi chế tác mà những hàm khởi tạo mọi có.Cách giải quyết: ta sẽ đặt toàn thể phần mã đó vào chỉ một trong những hàm khởi tạo. Với ta hy vọng rằng hàm khởi tạo nào thì cũng đều gọi đến hàm khởi tạo kia nhằm nó trả thành quá trình khởi tạo. Để làm việc đó, ta cần sử dụng this() để call một hàm khởi chế tác từ bên trong một hàm khởi chế tạo ra khác của cùng một lớp.

Ví dụ:

public class Student int id; String name; Student() System.out.println("gọi Constructor mặc định"); Student(int id, String name) this(); // nó được sử dụng để điện thoại tư vấn Constructor của lớp hiện tại this.id = id; this.name = name; void display() System.out.println(id + " " + name); public static void main(String args<>) Student e1 = new Student(111, "Viet"); Student e2 = new Student(222, "Nam"); e1.display(); e2.display(); Kết trái in ra vẫn là:gọi Contructor mang địnhgọi Contructor mặc định111 Việt222 Nam

Các quy tắc hấp thụ chồng

Các cách tiến hành overloaded cần cùng thương hiệu nhưng khác biệt ở những tham số.Chúng rất có thể được có mang cùng hoặc không giống kiểu dữ liệu trả về.Chúng hoàn toàn có thể được quan niệm cùng hoặc không giống access modifier.Các phương thức không được call là overloaded nếu bọn chúng chỉ không giống nhau ở kiểu tài liệu trả về hoặc access modifier.

Override LÀ GÌ ?

Overriding là 1 trong tính năng chất nhận được một lớp bé hoặc lớp con hỗ trợ một triển khai ví dụ của một phương thức đã được hỗ trợ bởi một trong các lớp siêu hoặc những lớp cha của nó. Nói giải pháp khác, trường hợp lớp con cung cấp trình triển khai cụ thể của phương thức mà vẫn được cung ứng bởi một trong các lớp phụ vương của nó, thì đó là ghi đè phương thức.

Override được thực hiện để thu được tính đa hình tại runtime.

Gọi phiên bạn dạng phương thức của lớp cha

Có nhiều trường hợp khi download đè 1 hành vi của lớp cha, tuy nhiên ta lại không thích thay thế trọn vẹn mà chỉ muốn bổ sung cập nhật một số chi tiết.

Ví dụ: Chẳng hạn, lớp Account đại diện thay mặt cho tài khoản ngân hàng chung chung. Nó hỗ trợ phương thức withdraw(double) với tác dụng rút tiền, thủ tục này triển khai quy trình rút tiền cơ bản: trừ số chi phí rút khỏi số dư thông tin tài khoản (balance). FeeBasedAccount là một số loại tài khoản bank thu phí so với mỗi lần rút tiền, nghĩa là sát bên quy trình rút chi phí cơ bản, nó còn giúp thêm một câu hỏi là trừ chi phí rút tiền ngoài số dư tài khoản. Như vậy, FeeBasedAccount có cần đến văn bản của bạn dạng withdraw() được Account cung cấp sẵn, dẫu vậy vẫn bắt buộc cài đè vị nội dung đó không được dùng. Ta cũng không thích chép nội dung bạn dạng withdraw() của tài khoản vào bạn dạng của FeeBasedAccount. Rứa vào đó, ta mong mỏi có cách gọi cách thức withdraw() của account từ vào phiên phiên bản cài đè tại FeeBasedAccount.

Cách giải quyết: từ trong phiên bạn dạng cài đè tại lớp con, ta ý muốn gọi đến bao gồm phương thức kia của lớp cha, trường đoản cú khóa super cho phép gọi đến giải pháp thành viên được vượt kế.

public class tài khoản private double balance = 0; public void deposit(double money) balance += money; public void wirhDraw(double money) balance -= money; public class FeeBasedAcount extends tài khoản private double fee = 10; public void withdraw(double money) super.wirhDraw(money); balance -= fee;

Các phép tắc cho việc cài đè

Danh sách tham số cần trùng nhau, kiểu cực hiếm trả về nên tương thích.Phương thức đè không được giảm quyền tróc nã nhập đối với phiên bản của lớp cha.Nói phương pháp khác, quyền truy nã nhập nhưng mà phiên phiên bản của lớp con được cho phép phải bằng hoặc rộng hơn phiên phiên bản của lớp cha. Ta không thể sở hữu đè một cách thức public bởi một phiên bạn dạng private. Nếu không, trường hợp xảy ra là một trong những lời gọi thủ tục đã được trình biên dịch đồng ý vì tưởng là cách tiến hành public nhưng đến lúc nó chạy lại bị lắp thêm ảo lắc đầu vì phiên bạn dạng được gọi lại là private.Phải là tình dục IS-A (kế thừa).Các phương thức final, static, private không thể sở hữu đè.

Sự không giống nhau giữa overload với override

OverrideOverload
Hành viThay thay đổi hành vi bây giờ của phương thức.

Xem thêm: Cetyl Alcohol Là Gì - Công Dụng, Dược Lực Học Và Tương Tác Thuốc

Thêm hoặc không ngừng mở rộng cho hành vi của phương thức.
Đa hìnhThể hiện tại tính đa hình trên run time.Thể hiện nay tính đa hình tại compile time.
Danh sách tham sốDanh sách tham số buộc phải giống nhau.Danh sách tham số có thể khác nhau.
Quyền tầm nã cậpPhương thức ghi đè sinh sống lớp con phải tất cả quyền truy vấn bằng hoặc lớn hơn phương thức được ghi đè nghỉ ngơi lớp cha.Các phương thức nạp ck có thể tất cả quyền truy cập khác nhau.
Giá trị trả vềKiểu trả về sẽ phải giống nhau.Kiểu trả về hoàn toàn có thể khác nhau.

Xem thêm: Tính Khách Quan Và Chủ Quan Là Gì ? Khách Quan Là Gì, Chủ Quan Là Gì

Phạm viXảy ra thân 2 class có quan hệ kế thừaXảy ra trong phạm vi cùng 1 class.