Class adalah construct yang memungkinkan kita membuat tipe data custom kita sendiri dengan mengelompokkan variabel dari tipe data, metod, dan events. Class seperti blueprint. Ini mendefinisikan data dan perilaku suatu tipe data. Jika class tidak dideklarasikan sebagai statis, code klien dapat menggunakannya dengan membuat objek atau instances yang assign ke variabel. Variabel tetap ada di memori sampai semua referencenya keluar dari scope. Saat itu, CLR menandainya sebagai memenuhi syarat untuk garabage collection. Jika kelas dinyatakan sebagai statis, maka hanya satu salinan yang ada di memori dan code klien hanya dapat mengaksesnya melalui kelas itu sendiri, bukan instances variable. Declaring Classes Class dinyatakan dengan menggunakan keyword class, seperti yang ditunjukkan pada contoh berikut:
public class Customer
{
//Fields, properties, methods and events go here...
}
Keyword class didahului oleh access level. Karena publik digunakan
dalam kasus ini, siapapun bisa membuat objek dari class ini.
Nama class mengikuti keyword class. Remainder dari definisi tersebut adalah body class,
di mana perilaku dan data didefinisikan.
Field, properti, metod, dan events di class secara kolektif disebut
sebagai anggota class.
Creating Objects
Meskipun kadang-kadang digunakan secara bergantian, class dan objek
adalah hal yang berbeda. Sebuah class mendefinisikan tipe data objek,
tapi bukan obyek itu sendiri. Objek adalah entitas konkret berdasarkan
class, dan terkadang disebut sebagai instance dari class.
Objek bisa dibuat dengan menggunakan keyword new diikuti dengan nama class
yang akan menjadi objeknya, seperti ini: Customer object1 = new Customer();
Ketika sebuah instance dari sebuah class dibuat, referensi ke objek
dipassing kembali ke programmer. Pada contoh sebelumnya, object1 adalah
referensi ke objek yang didasarkan pada Customer.
Referensi ini mengacu pada objek baru namun tidak berisi data objek itu
sendiri. Sebenarnya, Anda bisa membuat referensi objek tanpa membuat
objek sama sekali:Customer object2;
Kami tidak merekomendasikan membuat referensi objek seperti yang ini
yang tidak mengacu pada objek karena mencoba mengakses objek melalui
referensi seperti itu akan gagal pada saat run time. Namun,
referensi semacam itu dapat dibuat untuk refernce pada suatu objek,
baik dengan membuat objek baru, atau dengan meassignnya ke objek yang
ada, seperti ini:Customer object3 = new Customer();
Customer object4 = object3;
Code ini membuat dua reference objek yang keduanya mengacu pada objek
yang sama. Oleh karena itu, setiap perubahan pada objek yang dibuat
melalui object3 akan tercermin dalam penggunaan objek4 selanjutnya.
Karena objek yang didasarkan pada kelas disebut reference,
kelas dikenal sebagai tipe data reference.
Class Inheritance
Inheritance dilakukan dengan menggunakan derivasi, yang berarti sebuah
class dinyatakan dengan menggunakan class dasar yang inheritance data
dan behavior. Class dasar ditentukan dengan menambahkan titik dua dan
nama class dasar mengikuti nama class turunan, seperti ini:
public class Manager : Employee
{
// Employee fields, properties, methods and events are inherited
// New Manager fields, properties, methods and events go here...
}
Ketika sebuah class mendeklarasikan class dasar, ia mewarisi semua anggota class dasar
kecuali konstruktornya.Tidak seperti C ++, kelas di C # hanya bisa mewarisi langsung dari satu
class dasar. Namun, karena class dasar mungkin mewarisi dari class lain,class secara tidak
langsung mewarisi beberapa class dasar. Selanjutnya, class bisa langsung
mengimplementasikan lebih dari satu interface.
Sebuah class bisa dinyatakan abstrak. Class abstrak berisi metode abstrak
yang memiliki definisi signature tapi tidak ada implementasi.
Class abstrak tidak dapat di instantiasikan. Mereka hanya bisa digunakan melalui class turunan
yang menerapkan metode abstrak. Dengan kendala, class yang disegel tidak membiarkan class lain
diturunkan darinya.
Description
Dalam contoh berikut, class publik yang berisi satu field, metod, dan metod khusus yang
disebut konstruktor didefinisikanpublic class Person
{
// Field
public string name;
// Constructor that takes no arguments.
public Person()
{
name = "unknown";
}
// Constructor that takes one argument.
public Person(string nm)
{
name = nm;
}
// Method
public void SetName(string newName)
{
name = newName;
}
}
class TestPerson
{
static void Main()
{
// Call the constructor that has no parameters.
Person person1 = new Person();
Console.WriteLine(person1.name);
person1.SetName("John Smith");
Console.WriteLine(person1.name);
// Call the constructor that has one parameter.
Person person2 = new Person("Sarah Jones");
Console.WriteLine(person2.name);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
// Output:
// unknown
// John Smith
// Sarah Jones
ConversionConversion EmoticonEmoticon