JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #139. การโอเวอร์โหลดและการเอาชนะใน Java 5 วิธี...

คอฟฟี่เบรค #139. การโอเวอร์โหลดและการเอาชนะใน Java 5 วิธี Java ที่คุณไม่รู้

เผยแพร่ในกลุ่ม

การโอเวอร์โหลดและการเอาชนะใน Java

ที่มา: สื่อ ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับวิธีการ Overriding และ Overloading ในภาษา Java เนื่องจากความจริงที่ว่าทั้งสองคำนี้มักจะสับสนระหว่างกันจึงควรทำความเข้าใจอย่างชัดเจนถึงวัตถุประสงค์ของแต่ละวิธีและตัวเลือกสำหรับการสมัคร คอฟฟี่เบรค #139.  การโอเวอร์โหลดและการเอาชนะใน Java  5 วิธี Java ที่คุณไม่รู้ - 1

การโอเวอร์โหลด

การใช้มากกว่าหนึ่งวิธีด้วยชื่อเดียวกัน แต่มีพารามิเตอร์ต่างกันในคลาสเดียวกันหรือวิธีการระหว่างซูเปอร์คลาสและคลาสย่อยใน Java เรียกว่า Overloading เพื่อหลีกเลี่ยงปัญหานี้ จะมีการใช้วิธีการเดียวแทนหลายวิธีที่ดำเนินการคล้ายกัน เรามาอธิบายด้วยตัวอย่าง:
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);
    }
}
ในรหัสนี้ วิธีดำเนินการมากเกินไป วิธีการที่มีชื่อเดียวกันจะยอมรับพารามิเตอร์ประเภทต่างๆ การเลือกโหมดจะถูกกำหนดแยกกันสำหรับพารามิเตอร์intและdouble เมื่อเรารันโปรแกรมoperation.mod (12,4)รันvoid.mod (int a, int b)และoperation.mod (12.4,4.2)รันvoid.mod (double a, double b )

การเอาชนะ

ใน Java เราสามารถสร้างซูเปอร์คลาสและคลาสย่อยที่สืบทอดมาจากคลาสนั้นได้ คลาสย่อยเหล่านี้สามารถแทนที่และแทนที่วิธีการของคลาสพาเรนต์ที่สืบทอดมาได้ ทำได้โดยใช้วิธี Overriding สิ่งนี้สามารถเข้าใจได้ดีขึ้นด้วยตัวอย่าง:
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");
    }
}
ตัวอย่างโค้ดนี้สร้างซูเปอร์คลาสชื่อAnimalและคลาสย่อยชื่อCatและBeeที่สืบทอดมาจากซูเปอร์คลาสนั้น วิธีการเสียงในซูเปอร์คลาสถูกแทนที่ หมายเหตุ:การแยกวิธีการโอเวอร์โหลดเกิดขึ้นในขั้นตอนการคอมไพล์ การแยกวิธีการแทนที่เกิดขึ้นเมื่อรันไทม์

5 วิธี Java ที่คุณไม่รู้

ที่มา: Javarevisited ระบบนิเวศการพัฒนา Java มีเครื่องมือมากมายที่โปรแกรมเมอร์สามารถนำเข้าและใช้ในโปรแกรมของตนได้ ซึ่งรวมถึงคลาสและวิธีการในตัว พวกเขาทำให้การทำงานของโปรแกรมเมอร์ง่ายขึ้นอย่างมากและช่วยให้พวกเขาเข้าใจและเขียนโค้ดได้ดีขึ้น นักพัฒนาทุกคนควรรู้เกี่ยวกับพวกเขา ต่อไปนี้เป็นวิธีการ Java 5 วิธีที่ค่อนข้างหายาก แต่มีประโยชน์มากในการทำงานของคุณ

1. การลดลงอย่างแน่นอน

decreatExact()เป็นฟังก์ชัน Java พื้นฐานจาก คลาส Mathที่จะลด/ลบอาร์กิวเมนต์ที่กำหนด (ตัวเลข) ทีละหนึ่งและส่งกลับผลลัพธ์ ฟังก์ชันนี้จะตรงกันข้ามกับฟังก์ชันincreatExact() ตัวอย่างเช่น หากอาร์กิวเมนต์ที่กำหนดคือ 11 ผลลัพธ์จะเป็น 10 หากการลดอาร์กิวเมนต์ทำให้ชนิดข้อมูลล้น ข้อยกเว้นจะเกิดขึ้น ดังนั้นจึงเป็นเรื่องสำคัญที่ต้องระมัดระวังเมื่อใช้ฟังก์ชันนี้ โดยเฉพาะอย่างยิ่งสำหรับตัวเลขจำนวนมาก โดยปกติแล้ว ฟังก์ชันนี้จะใช้จำนวนเต็ม ไวยากรณ์:
Math.decrementExact(number);
ตัวอย่าง:
System.out.println(Math.decrementExact(11));
// Output: 10

2.getAsDouble

getAsDouble ()เป็นวิธีการที่อยู่ใน คลาส OptionalDouble วัตถุOptionalDoubleคือวัตถุที่อาจเก็บตัวเลขคู่ได้ เมธอดในคลาสสามารถใช้เพื่อดำเนินการกับค่าสองเท่าที่มีอยู่ในออบเจ็กต์ หรือเพื่อบ่งชี้ว่าค่าสองเท่านั้นไม่มีอยู่เลย getAsDouble()เป็นหนึ่งในวิธีการดังกล่าว และจะส่งกลับค่าสองเท่าหากมีอยู่ มิฉะนั้นNoSuchElementException จะถูกส่งออก ไป ไวยากรณ์:
OptionalDoubleObject.getAsDouble();
ตัวอย่าง:
OptionalDouble num = OptionalDouble.of(15.0);
System.out.println(num.getAsDouble());
// Output: 15.0

3.absExact

เมธอดabsExact() คล้ายกับ ฟังก์ชันabs()ในคลาสMath ส่งกลับค่าสัมบูรณ์ของตัวเลข ซึ่งเป็นค่าบวกของตัวเลขโดยไม่คำนึงถึงเครื่องหมาย ข้อแตกต่างเพียงอย่างเดียวคือมันจะทำเช่นนี้ก็ต่อเมื่อมีการแสดงเป็นประเภทข้อมูลเท่านั้น ( intหรือlong ) หากผลลัพธ์ของค่าที่ ส่ง คืนเกินประเภทข้อมูลดั้งเดิม ระบบ จะส่งออกArithmeticException ไวยากรณ์:
Math.absExact(number);
ตัวอย่าง:
System.out.println(Math.absExact(-11));
// Output: 11

4.จบด้วย

EndsWith()เป็นวิธีการสตริงในตัวที่ส่งกลับค่าบูลีน ขึ้นอยู่กับว่าสตริงที่กำหนดลงท้ายด้วยคำต่อท้ายบางอย่าง (คำสิ้นสุด/สตริง) ในพารามิเตอร์ วิธีนี้จะตรงกันข้ามกับ วิธี การ startWith()ซึ่งนักพัฒนาหลายคนอาจคุ้นเคย ไวยากรณ์:
String.endsWith(String suffix);
ตัวอย่าง:
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/

5. แบ่งแยกไม่ออก

เมธอดDivideUnsigned()เป็นเมธอดจาก คลาส Integerที่ให้คุณหารตัวเลขสองตัวแล้วส่งกลับผลลัพธ์ของการหาร จำนวนเต็มที่ไม่ได้ลงนาม เมื่อเปรียบเทียบกับจำนวนเต็มที่ลงนามปกติ จะแสดงได้เฉพาะจำนวนบวกเท่านั้น ทั้งจำนวนเต็มที่ไม่ได้ลงนามและจำนวนเต็มที่ลงนามมีจำนวนตัวเลขในช่วงเท่ากัน (ขนาดของช่วงคือ 65,536 หมายเลข) อย่างไรก็ตาม เนื่องจากจำนวนเต็มที่ไม่ได้ลงนามไม่สามารถเป็นค่าลบได้ ค่าสูงสุดในช่วงบวกจึงสูงกว่าค่าสูงสุดสำหรับจำนวนเต็มที่ลงนามปกติมาก เพื่อให้ง่ายขึ้น เราสามารถดูตัวอย่างของไบต์ที่ลงนามและไม่ได้ลงนามแทน ไบต์มีช่วง 256 ตัวเลข ไบต์ปกติสามารถมีค่าได้ตั้งแต่ -128 ถึง 127 อย่างไรก็ตาม ไบต์ที่ไม่ได้ลงนามสามารถมีค่าได้ตั้งแต่ 0 ถึง 255 มิฉะนั้น ฟังก์ชันจะทำงานเหมือนกับการหารปกติทุกประการ ไวยากรณ์:
Integer.divideUnsigned(int dividend, int divisor);
ตัวอย่าง:
int dividend = 10;
int divisor = 5;
int quotient = Integer.divideUnsigned(dividend, divisor);
System.out.println(quotient);
// Output: 2

บทสรุป

นี่คือบทสรุปของฟังก์ชันและวิธีการที่กล่าวถึงในบทความนี้:
  • decreationExact - ลด/ลบตัวเลขที่กำหนดด้วย 1

  • getAsDouble - ส่วนหนึ่งของ ฟังก์ชัน OptionalDoubleส่งคืนตัวเลขที่มีค่าสองเท่าหรือระบุว่าไม่มีอยู่

  • absExact - ส่งกลับค่าสัมบูรณ์ของตัวเลขหากสามารถแสดงเป็นชนิดข้อมูลต้นฉบับได้

  • endsWith() - ส่งกลับค่าบูลีนขึ้นอยู่กับว่ามีคำต่อท้ายที่ระบุอยู่ในสตริงที่กำหนดหรือไม่

  • divideUnsigned() - ทำการหารปกติ ส่งคืนผลลัพธ์ของการหารตัวเลข

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION