Overloading Method
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 50 dari 70.
Overloading method memungkinkan kamu mendefinisikan beberapa method dengan nama yang sama, tetapi daftar parameter yang berbeda. Compiler menentukan versi mana yang akan dipanggil berdasarkan argumen yang kamu berikan.
Setiap method yang di-overload harus memiliki signature yang unik, yaitu jumlah parameter yang berbeda atau tipe parameter yang berbeda:
public static void Print(string message)
{
Console.WriteLine(message);
}
public static void Print(string message, int times)
{
for (int i = 0; i < times; i++)
Console.WriteLine(message);
}
public static void Print(int number)
{
Console.WriteLine(number);
}// Compiler memilih versi yang tepat
Print("Hello"); // Memanggil Print(string)
Print("Hi", 3); // Memanggil Print(string, int)
Print(42); // Memanggil Print(int)Overloading berbeda dari parameter opsional dalam satu hal penting. Dengan parameter opsional, kamu memiliki satu method yang menangani beberapa skenario. Dengan overloading, kamu memiliki method terpisah yang dapat berisi logika yang sepenuhnya berbeda untuk setiap kasus.
Perhatikan bahwa tipe nilai yang dikembalikan saja tidak membuat method menjadi unik. Kamu tidak dapat memiliki dua method yang hanya berbeda pada nilai yang dikembalikannya. Daftar parameter harus berbeda. Method overloading adalah bentuk polimorfisme saat kompilasi, yaitu keputusan tentang method mana yang akan dipanggil dibuat saat kode dikompilasi, bukan saat kode dijalankan.
Tantangan
MudahMari kita buat class kalkulator serbaguna yang menunjukkan keunggulan method overloading. Kamu akan membuat beberapa versi method perhitungan yang menangani berbagai situasi, mulai dari operasi sederhana dengan dua angka hingga perhitungan yang lebih kompleks, semuanya menggunakan nama method yang sama dan intuitif.
Kamu akan mengatur kodemu dalam dua file:
Calculator.cs: Buat classCalculatordi namespaceMathToolsdengan method overload yang memiliki nama sama, tetapi menerima parameter berbeda:Multiply: Buat tiga versi overload:- Satu versi yang menerima dua parameter
intdan mengembalikan hasil kalinya sebagaiint - Satu versi yang menerima tiga parameter
intdan mengembalikan hasil kalinya sebagaiint - Satu versi yang menerima dua parameter
doubledan mengembalikan hasil kalinya sebagaidouble
- Satu versi yang menerima dua parameter
Describe: Buat dua versi overload:- Satu versi yang menerima
intdan mengembalikan"Integer: {value}" - Satu versi yang menerima
doubledan mengembalikan"Double: {value}"
- Satu versi yang menerima
Program.cs: Di file utamamu, buat instanceCalculatordan tunjukkan cara compiler secara otomatis memilih method overload yang tepat berdasarkan argumen yang kamu berikan.
Kamu akan menerima empat input:
- Bilangan bulat pertama (misalnya,
5) - Bilangan bulat kedua (misalnya,
4) - Bilangan bulat ketiga (misalnya,
3) - Sebuah bilangan desimal (misalnya,
2.5)
Dengan kalkulatormu, lakukan operasi berikut dan cetak setiap hasil pada barisnya sendiri:
- Kalikan dua bilangan bulat pertama (menggunakan versi dua-int)
- Kalikan ketiga bilangan bulat (menggunakan versi tiga-int)
- Kalikan bilangan bulat pertama dengan bilangan desimal (menggunakan versi dua-double)
- Jelaskan bilangan bulat pertama (menggunakan versi int)
- Jelaskan bilangan desimal (menggunakan versi double)
Misalnya, jika inputnya adalah 5, 4, 3, dan 2.5, outputnya seharusnya:
20
60
12.5
Integer: 5
Double: 2.5Perhatikan bagaimana kamu memanggil Multiply dan Describe dengan tipe dan jumlah argumen yang berbeda, tetapi compiler selalu tahu persis versi mana yang harus digunakan. Inilah polimorfisme saat kompilasi, keputusan dibuat ketika kodemu dikompilasi, bukan saat dijalankan!
Coba sendiri
using System;
using MathTools;
class Program
{
public static void Main(string[] args)
{
// Baca input
int firstInt = Convert.ToInt32(Console.ReadLine());
int secondInt = Convert.ToInt32(Console.ReadLine());
int thirdInt = Convert.ToInt32(Console.ReadLine());
double decimalNum = Convert.ToDouble(Console.ReadLine());
// TODO: Buat instance Calculator
// TODO: Panggil Multiply dengan dua bilangan bulat dan cetak hasilnya
// TODO: Panggil Multiply dengan tiga bilangan bulat dan cetak hasilnya
// TODO: Panggil Multiply dengan bilangan bulat pertama dan bilangan desimal, lalu cetak hasilnya
// TODO: Panggil Describe dengan bilangan bulat pertama dan cetak hasilnya
// TODO: Panggil Describe dengan bilangan desimal dan cetak hasilnya
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online