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) :

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();
}
}
}

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:

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

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:

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

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 *