JavaRush /Blog Java /Random-VI /Nghỉ giải lao #139. Quá tải và ghi đè trong Java. 5 phươn...

Nghỉ giải lao #139. Quá tải và ghi đè trong Java. 5 phương thức Java mà bạn chưa biết

Xuất bản trong nhóm

Quá tải và ghi đè trong Java

Nguồn: Medium Trong bài viết này, bạn sẽ tìm hiểu về các phương thức Ghi đè và Quá tải trong ngôn ngữ Java. Do cả hai thuật ngữ này thường bị nhầm lẫn với nhau nên cần hiểu rõ mục đích của từng phương pháp và các lựa chọn áp dụng của chúng. Nghỉ giải lao #139.  Quá tải và ghi đè trong Java.  5 Phương Thức Java Bạn Chưa Biết - 1

Quá tải

Việc sử dụng nhiều hơn một phương thức có cùng tên nhưng có tham số khác nhau trong cùng một lớp hoặc phương thức giữa siêu lớp và lớp con trong Java được gọi là Quá tải. Để tránh điều này, một phương pháp duy nhất được sử dụng thay vì nhiều phương pháp thực hiện các hành động tương tự. Hãy giải thích bằng một ví dụ:
public class MethodOverloading {

    public static void main(String[] args){
        MethodOverloading operation = new MethodOverloading();
        operation.mod(12,4);
        operation.mod(12.4,4.2);
    }

    void mod(double a, double b){
        System.out.println(a % b);
    }

    void mod(int a, int b){
        System.out.println(a % b);
    }
}
Trong mã này, phương thức hoạt động bị quá tải. Các phương thức có cùng tên chấp nhận các tham số có kiểu khác nhau. Việc lựa chọn chế độ được xác định riêng cho tham số intdouble . Khi chúng ta chạy chương trình, Operation.mod (12,4) chạy void.mod (int a, int b)Operation.mod (12.4,4.2) chạy void.mod (double a, double b) .

Ghi đè

Trong Java, chúng ta có thể tạo một siêu lớp và các lớp con kế thừa từ lớp đó. Các lớp con này có thể ghi đè và thay thế các phương thức của lớp cha mà chúng kế thừa. Việc này được thực hiện bằng phương pháp Ghi đè. Điều này có thể được hiểu rõ hơn bằng một ví dụ:
public class MethodOverriding {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.sound();

        Bee bee = new Bee();
        bee.sound();
    }
}

class Animal {
    void sound(){
        System.out.println("Animal sounds");
    }
}

class Cat extends Animal{
    @Override
    void sound() {
        System.out.println("Cat : meow meow");
    }
}

class Bee extends Animal{
    @Override
    void sound() {
        System.out.println("Bee : buzz buzz");
    }
}
Ví dụ mã này tạo ra một siêu lớp có tên Animal và các lớp con có tên CatBee kế thừa từ siêu lớp đó. Phương thức âm thanh trong siêu lớp bị ghi đè. Lưu ý: Việc tách các phương thức nạp chồng xảy ra ở giai đoạn biên dịch. Việc tách các phương thức bị ghi đè xảy ra trong thời gian chạy.

5 phương thức Java mà bạn chưa biết

Nguồn: Javarevisited Hệ sinh thái phát triển Java có sẵn nhiều công cụ mà các lập trình viên có thể nhập và sử dụng trong chương trình của họ. Chúng bao gồm các lớp và phương thức tích hợp sẵn. Chúng đơn giản hóa đáng kể công việc của lập trình viên và cho phép họ hiểu và viết mã tốt hơn. Mọi nhà phát triển nên biết về họ. Dưới đây là 5 phương thức Java khá hiếm nhưng có thể rất hữu ích trong công việc của bạn.

1. giảmChính xác

decrementExact() là một hàm Java cơ bản từ lớp Math giúp giảm/trừ một đối số (số) đã cho và trả về kết quả. Hàm này ngược lại với hàm tăngExact() . Ví dụ: nếu đối số đã cho là 11 thì kết quả là 10. Nếu việc giảm đối số khiến kiểu dữ liệu của nó bị tràn thì một ngoại lệ sẽ được đưa ra. Vì vậy, điều quan trọng là phải cẩn thận khi sử dụng chức năng này, đặc biệt là với số lượng lớn. Thông thường, số nguyên được sử dụng cho hàm này. Cú pháp:
Math.decrementExact(number);
Ví dụ:
System.out.println(Math.decrementExact(11));
// Output: 10

2.getAsDouble

getAsDouble() là một phương thức thuộc lớp Tùy chọnDouble . Một đối tượng Tùy chọnDouble là một đối tượng có khả năng chứa một số kép. Các phương thức trong lớp có thể được sử dụng để hoạt động trên một giá trị kép có trong một đối tượng hoặc để chỉ ra rằng giá trị kép đó hoàn toàn không được chứa. getAsDouble() là một trong những phương thức như vậy và nó trả về giá trị gấp đôi nếu có. Ngược lại, ngoại lệ NoSuchElementException sẽ được ném ra . Cú pháp:
OptionalDoubleObject.getAsDouble();
Ví dụ:
OptionalDouble num = OptionalDouble.of(15.0);
System.out.println(num.getAsDouble());
// Output: 15.0

3. absChính xác

Phương thức absExact() tương tự như hàm abs() trong lớp Math . Nó trả về giá trị tuyệt đối của một số, là giá trị dương của số đó bất kể dấu của nó. Sự khác biệt duy nhất là nó chỉ thực hiện điều này nếu nó được biểu diễn chính xác dưới dạng kiểu dữ liệu của nó ( int hoặc long ). Nếu kết quả của giá trị trả về vượt quá kiểu dữ liệu ban đầu, ArithmeticException sẽ được ném ra . Cú pháp:
Math.absExact(number);
Ví dụ:
System.out.println(Math.absExact(-11));
// Output: 11

4.kết thúcVới

endWith() là một phương thức chuỗi tích hợp trả về giá trị boolean tùy thuộc vào việc chuỗi đã cho có kết thúc bằng một hậu tố nhất định (từ/chuỗi cuối) trong tham số hay không. Phương thức này trái ngược với phương thức startedWith() mà nhiều nhà phát triển có thể quen thuộc. Cú pháp:
String.endsWith(String suffix);
Ví dụ:
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/

5. chiaUnsigned

Phương thức chiaUnsigned() là một phương thức từ lớp Integer cho phép bạn chia hai số và trả về kết quả của phép chia. Số nguyên không dấu, so với số nguyên có dấu thông thường, chỉ có thể biểu thị số dương. Cả số nguyên không dấu và số nguyên có dấu đều có cùng số lượng các số trong phạm vi của chúng (kích thước của phạm vi là 65.536 số). Tuy nhiên, vì số nguyên không dấu không thể âm nên giá trị tối đa của chúng trong phạm vi dương cao hơn nhiều so với giá trị tối đa của số nguyên có dấu thông thường. Để đơn giản hóa điều này, thay vào đó chúng ta có thể xem ví dụ về byte có dấu và không dấu. Byte có phạm vi 256 số. Một byte thông thường có thể có giá trị từ -128 đến 127. Tuy nhiên, một byte không dấu có thể có giá trị từ 0 đến 255. Mặt khác, hàm hoạt động giống hệt như phép chia thông thường. Cú pháp:
Integer.divideUnsigned(int dividend, int divisor);
Ví dụ:
int dividend = 10;
int divisor = 5;
int quotient = Integer.divideUnsigned(dividend, divisor);
System.out.println(quotient);
// Output: 2

Phần kết luận

Dưới đây là bản tóm tắt các chức năng và phương pháp được thảo luận trong bài viết này:
  • decrementExact - giảm/trừ một số đã cho bằng 1

  • getAsDouble - một phần của hàm Tùy chọnDouble , trả về một số có giá trị gấp đôi hoặc cho biết sự vắng mặt của nó

  • absExact - trả về giá trị tuyệt đối của một số nếu nó có thể được biểu diễn dưới dạng kiểu dữ liệu gốc

  • kết thúcWith() - trả về giá trị boolean tùy thuộc vào việc hậu tố đã chỉ định có tồn tại trong chuỗi đã cho hay không

  • chiaUnsigned() - thực hiện phép chia bình thường, trả về kết quả chia một số

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION