by

Non Static Method di CSharp

Pada postingan sebelumnya dijelaskan bahwa static method dapat diakses hanya melalui class, sedangkan non-static method dapat diakses melalui instance.

Kita akan mencoba melihat bagaimana implementasi non-static method dibandingkan dengan static method.

Buat satu buah project console application dengan C#.

Ketikkan di dalam class1 seperti ini (copy-paste saja semua code dibawah ini kedalam class1.cs) :

[csharp]using System;
namespace nonstatic
{
class First
{
public virtual void one()
{
Console.WriteLine("first one");
}
}
class Second: First
{
public override void one()
{
Console.WriteLine("Second one");
}
}
/// <summary>
/// Summary description for Class1.
/// </summary>

class Output
{
/// <summary>
/// The main entry point for the application.
/// </summary>

[STAThread]
static void Main()
{
//
// TODO: Add code to start application here
//
Second y = new Second();
First x = y;
x.one();
y.one();
}
}
}[/csharp]

Output hasil code tersebut adalah:

second one
second one

Output ini terjadi karena objek x sudah di instance oleh objek y, dimana objek y adalah class second yang berasal turunan dari class First.

Jika class First dan class Second kita rubah menjadi seperti ini:

[csharp]class First
{
public void one()
{
Console.WriteLine("first one");
}
}
class Second: First
{
public void one2()
{
Console.WriteLine("Second one");
}
}[/csharp]

Maka output code yang dihasilkan adalah:

First one
First one

Output ini dihasilkan karena perubahan yang dilakukan menyebabkan class Second menjadi memiliki 2 non-static method yaitu method one dan method one2.

Lalu, jika class First dan class Second kita rubah lagi seperti ini:

[csharp]class First
{
public static void one()
{
Console.WriteLine("first one");
}
}
class Second: First
{
public void one2()
{
Console.WriteLine("Second one");
}
}[/csharp]

Maka akan muncul eror seperti berikut ini pada aplikasi IDE anda:

Static member 'nonstatic.First.one()' cannot be accessed with an instance reference; qualify it with a type name instead
Static member 'nonstatic.First.one()' cannot be accessed with an instance reference; qualify it with a type name instead

Eror tersebut memperlihatkan bahwa static method tidak dapat diakses menggunakan instance.

Comment

Leave a Reply

Your email address will not be published. Required fields are marked *