Override là gì

Trong nội dung bài viết này, bản thân sẽ trình bày về Override, overload và sự khác nhau cơ bạn dạng giữa chúng.

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

1. Override

1.1 Khái niệm với ví dụ:

Override là một chức năng được cho phép một tờ nhỏ hỗ trợ một xúc tiến rõ ràng của cách thức đã làm được cung ứng do một trong những lớp phụ thân của nó. Nói dễ nắm bắt rộng, ví như lớp con có một hoặc những cách làm kiểu như với một trong các lớp cha của chính nó, thì chính là ghi đnai lưng phương thức.

Override được áp dụng nhằm thu được xem nhiều hình trên runtime.

ví dụ như về thực hiện Override

Ta sẽ xây dựng dựng 1 cây kế thừa cho những loài động vật hoang dã như hình dưới, các loại động vật này đều phải có tầm thường các đặc điểm với thủ tục như:picture – thương hiệu file ảnh thay mặt mang lại loài vật nàyfood – nhiều loại thức ăn uống nhưng loài vật say mê. Trong thời điểm này, biến hóa này chỉ bao gồm nhị giá bán trị: cỏ (grass) hoặc giết thịt (meat).hunger – một đổi thay int biểu diễn cường độ đói của con vật. Biến này biến hóa tùy theo bao giờ con vật ăn và nó ăn uống từng nào.boundaries – những giá trị màn biểu diễn theo hướng dọc với chiều ngang (ví dụ 640 x 480) của Quanh Vùng cơ mà những con vật sẽ đi lại vận động trong số ấy.location – các tọa độ X cùng Y của loài vật trong khu vực của chính nó.makeNoise() – hành động Khi con vật phạt ra tiếng kêu.eat() – hành động Lúc loài vật gặp gỡ mối cung cấp thức ăn uống yêu mếm, làm thịt hoặc cỏ.sleep() – hành động Khi con vật được coi là sẽ ngủ.roam() – hành vi khi con vật chưa phải sẽ ăn uống tốt sẽ ngủ, hoàn toàn có thể chỉ đi long dong đợi chạm mặt món gì nạp năng lượng được hoặc gặp biên cương lãnh địa.

*

Tuy nhiên những loài động vật hoang dã trên lại có thức ăn với âm tkhô hanh vạc ra khác biệt, vậy yêu cầu ta phải nhằm eat() với makeNoise() được mua đè cổ trên từng lớp con:

*

Ta vẫn tiếp tục phân nhóm mịn rộng cây kế thừa trên. Chó sói và chó gồm chúng ta mặt hàng ngay sát, thuộc ở trong bọn họ Chó (canine), chúng thường di chuyển theo bè lũ bọn đề xuất có thể cần sử dụng thông thường thủ tục roam(). Mèo, hổ, sư tử thuộc ở trong họ Mèo (feline) Khi dịch rời bọn chúng hay tách đồng nhiều loại yêu cầu có thể sử dụng bình thường thủ tục roam(). Hà mã vẫn liên tiếp dùng phương thức roam() trường đoản cú animal.

*

Vậy Lúc tải đnai lưng, thủ tục như thế nào được gọi?

Trong cây thừa kế xảy ra download đè, vật gì ở tốt độc nhất sẽ tiến hành Hotline.Lấy ví dụ sống hình trên, lớp Wolf tất cả bốn phương thức: sleep() được thừa kế từ bỏ Animal, roam() được quá kế trường đoản cú Canine (thực ra là phiên bản đtrằn bản của Animal), với nhì cách làm cơ mà Wolf thiết lập đnai lưng bạn dạng của Animal - makeNoise() và eat(). Các phương thức sẽ được Gọi nhỏng sau:

*

1.2 Hotline phiên bạn dạng thủ tục của lớp cha

Có nhiều trường đúng theo lúc cài đặt đè 1 hành động của lớp phụ vương, nhưng ta lại không thích thay thế sửa chữa trọn vẹn mà chỉ muốn bổ sung một số chi tiết.Ví dụ: Chẳng hạn, lớp Account thay mặt mang lại thông tin tài khoản bank bình thường tầm thường. Nó cung cấp phương thức withdraw(double) cùng với công dụng rút ít chi phí, phương thức này tiến hành quá trình rút ít chi phí cơ bản: trừ số chi phí rút ít khỏi số dư thông tin tài khoản (balance). FeeBasedAccount là các loại tài khoản ngân hàng thu tiền phí so với mỗi lần rút ít tiền, tức là bên cạnh quy trình rút ít tiền cơ bạn dạng, nó còn khiến cho thêm một vấn đề là trừ phí tổn rút chi phí ngoài số dư tài khoản. vì thế, FeeBasedAccount bao gồm bắt buộc cho câu chữ của bản withdraw() được Account cung cấp sẵn, tuy thế vẫn nên sở hữu đtrần do câu chữ đó không được dùng. Ta cũng không thích chxay văn bản phiên bản withdraw() của Account vào bản của FeeBasedAccount. Ttuyệt vào đó, ta muốn bao gồm phương pháp Điện thoại tư vấn cách tiến hành withdraw() của Account trường đoản cú vào phiên bạn dạng tải đè cổ trên FeeBasedAccount.Cách giải quyết: trường đoản cú vào phiên bản download đnai lưng trên lớp bé, ta ước ao call mang đến bao gồm cách thức kia của lớp phụ vương, từ bỏ khóa super được cho phép gọi mang lại phương pháp thành viên được quá kế.

public class Account private double balance = 0; public void deposit(double money) balance += money; public void wirhDraw(double money) balance -= money; public class FeeBasedAcount extends Account private double fee = 10; public void withdraw(double money) super.wirhDraw(money); balance -= fee;

1.3 Các quy tắc cho vấn đề sở hữu đè

Danh sách tđê mê số phải trùng nhau, hình dạng quý giá trả về cần tương hợp.Pmùi hương thức đè cổ ko được bớt quyền truy tìm nhập so với phiên phiên bản của lớp phụ vương.Nói bí quyết không giống, quyền truy nhập nhưng phiên bản của lớp con có thể chấp nhận được đề xuất bằng hoặc rộng lớn rộng phiên bạn dạng của lớp phụ vương. Ta cần yếu thiết lập đtrần một thủ tục public bởi một phiên bạn dạng private. Nếu không, tình huống xảy ra là một trong những lời call cách thức đã được trình biên dịch đồng ý vì tưởng là phương thức public nhưng cho đến lúc nó chạy lại bị thiết bị ảo phủ nhận bởi phiên phiên bản được điện thoại tư vấn lại là private.Phải là quan hệ IS-A (kế thừa).Các phương thức final, static, private thiết yếu cài đặt đè cổ.2. Overload

2.1 Khái niệm với ví dụ

Nạp ông xã cách thức đơn giản dễ dàng là gồm vài ba thủ tục trùng thương hiệu dẫu vậy khác biệt về đối số trong thuộc 1 class. Cài ck cách làm được cho phép ta chế tác các phiên bạn dạng của một cách thức, mỗi phiên bạn dạng đồng ý một list đối số khác biệt, nhằm chế tạo thuận tiện mang lại bài toán Gọi cách làm.Nạp chồng phương thức được sử dụng nhằm chiếm đượ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);

2.2 Các biện pháp nạp chồng

2.2.1 Tgiỏi thay đổi số lượng tsi mê 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); 2.2.2 Ttốt đổi hình dáng trả về của tsi mê 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);

2.3 Tự động xay mẫu mã trong nạp chồng

Kiểu dữ liệu của đối số truyền vào được chuyển đổi quý phái dạng hình dữ liệu không giống (tự động ép kiểu) nếu quý hiếm của đối số kia không phù hợp với vẻ bên ngoài tài liệu của tđắm say số đã có được đinc nghĩa.lấy một ví dụ thủ tục sum(int x, double y) ở ví dụ bên trên lúc được truyền tsi số nhỏng sau sum(10, 20) thì quý giá tsi mê số thứ hai được truyền vào là int sẽ tiến hành tự động hóa xay giao diện thanh lịch giao diện double.Quy tắc xay kiểu: Được tự động nghiền về hình dạng dữ liệu to hơn và ưu tiên gần nhất dạng hình tài liệu được ép theo trang bị từ hình sau:
*
Theo hình bên trên thì phong cách byte rất có thể nghiền lịch sự các đẳng cấp lớn hơn nó như short, int, float, long, double cơ mà nó sẽ ưu tiên mẫu mã short. Hoặc kiểu dáng int có thể xay thanh lịch hình trạng float, long, double mà lại nó vẫn ưu tiên nghiền quý phái giao diện long vì chưng long ngay gần nó rộng so với 2 mẫu mã 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 vẫn là "Second method will be call" Có nghĩa là hàm sum thứ 2 sẽ tiến hành Call vị tđam mê số truyền vào là dạng hình int, nó đã ưu tiên xay thanh lịch giao diện to hơn nó và có giá trị sớm nhất nó, sống đó là phong cách long.Từ kia ta tất cả ta có thể suy ra là loại double cấp thiết tự động ép kiểu dáng.

2.4 Nạp ông xã cách tiến hành khởi tạo

Xét trường vừa lòng ta gồm các hàm khởi chế tạo ông chồng cùng với hoạt động khởi tạo tương đương nhau và chỉ khác biệt tại phần xử trí những giao diện đối số. Ta sẽ không muốn chnghiền đi chxay lại phần mã khởi chế tạo mà lại những hàm khởi sản xuất đều phải có.Cách giải quyết: ta vẫn đặt toàn thể phần mã kia vào chỉ một trong các hàm khởi tạo ra. Và ta ao ước rằng hàm khởi tạo nên nào thì cũng rất nhiều Call mang lại hàm khởi chế tạo ra kia nhằm nó xong quá trình khởi chế tạo ra. Để làm việc kia, ta sử dụng this() nhằm call một hàm khởi tạo ra từ phía bên trong một hàm khởi tạo thành khác của và một lớp. Ví dụ: public class Student int id; String name; Student() System.out.println("Gọi Constructor khoác định"); Student(int id, String name) this(); // nó được sử dụng để call Constructor của lớp bây chừ 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 quả in ra đã là:Điện thoại tư vấn Contructor khoác địnhHotline Contructor mang định111 Việt222 Nam

2.5 Các luật lệ hấp thụ chồng

Các cách thức overloaded đề nghị cùng thương hiệu mà lại khác biệt làm việc những tyêu thích số.Chúng có thể được khái niệm thuộc hoặc khác dạng hình dữ liệu trả về.Chúng có thể được khái niệm thuộc hoặc không giống access modifier.Các cách thức không được điện thoại tư vấn là overloaded nếu chúng chỉ không giống nhau sinh hoạt vẻ bên ngoài dữ liệu trả về hoặc access modifier.3. Sự không giống nhau giữa overload với overrideOverrideOverload
Hành viTxuất xắc thay đổi hành động hiện nay của thủ tục.Thêm hoặc không ngừng mở rộng cho hành động của thủ tục.

Xem thêm: Diệt Virus Tốt Nhất Cho Android 2016, 6 Ứng Dụng Chống Virus Tốt Nhất Cho Android

Đa hìnhThể hiện nay tính đa hình trên run time.Thể hiện tính đa hình trên compile time.
Danh sách tsi mê sốDanh sách tsi mê số nên như là nhau.Danh sách tsi số rất có thể không giống nhau.
Quyền tróc nã cậpPmùi hương thức ghi đè cổ sống lớp con đề nghị có quyền truy vấn bởi hoặc lớn hơn thủ tục được ghi đè cổ ngơi nghỉ lớp phụ thân.Các cách tiến hành nạp chồng hoàn toàn có thể tất cả quyền truy vấn khác biệt.
Giá trị trả vềKiểu trả về bắt buộc phải như là nhau.Kiểu trả về có thể khác biệt.

Xem thêm: Cách Làm Powerpoint Cho Khóa Luận Tốt Nghiệp, Mẫu Slide Bảo Vệ Khóa Luận Tốt Nghiệp

Phạm viXảy ra giữa 2 class gồm quan hệ tình dục kế thừaXảy ra trong phạm vi thuộc 1 class.
4. Tổng kếtBài viết trên tôi đã ra mắt về override, overload với sự biệt lập thân chúng, mong muốn sẽ giúp ích rất nhiều mang lại các bạn đọc nội dung bài viết này. Bài viết trên trường hợp bao gồm thiếu thốn xót gì ao ước chúng ta góp ý cho khách hàng bên dưới phần phản hồi, bản thân sẽ sửa lại để nội dung bài viết tất cả ngôn từ giỏi rộng. Cảm ơn các bạn đang phát âm bài bác viết!


Chuyên mục: Kiến thức