Struct kullanmanın amacı ram'de class a göre daha az yer kaplar.
Struct extend edilemez, herhangi bir başka sınıfa implement edilemez.
Ama bir değişken olarak tanımlanabilir.
class ogrenci {
public string adi;
public Ders dersi;
}
struct Ders {
public string dersAdi;
}
Bir classta yer alıpta her new diyerek oluşturulan instance'da aynı olmasını isteyeceğimiz şeyler olabilir.
Bu yüzden static kullanılır.
Console cns = new Console();
cns.writeLine
değil de
Console.writeLine diyebilmemizi sağlar.
Ram'de bir defa oluşturulur.
static class Ogrenci {
}
class 'ı static yaparsak içindekilerin tamamı static olmalıdır. instance üretilemez bu sınıftan.
Zorunlu olmayan Polymorphisim
*Virtual
public virtual string temizlikYap() şeklinde kullanılır.
Virtual ile kalıtım alınan sınıftan isteğe bağlı olarak polymorphisim yapılır.
Yani yemek sınıfına virtual yazılmış metod eklenerek alt sınıfta isteğe bağlı kullanılabilir.
*Override
public override string temizlikYap() fonksiyonu child sınıfta değiştirilebilir.
Böylece virtual ile yazılmış metodu ezerek yeni metod yazmış olur.
Zorunlu Polymorphisim
*Abstract
Abstractlar sadece miras vermek için tasarlanan sınıflardır.
Bir metot ezilmesini zorunlu kılmak için abstract olur.
Virtual bir parametreli fonksiyon override edilir ve isteğe bağlıdır.
Ama abstract öyle değildir.
Abstract metodun gövdesi olmaz zaten ezilecektir.
Değişkenlerin alabileceği değerlerin sabit (belli) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Programda birçok değişkene tek tek sayısal değer vermek yerine "enum" kullanılabilir.
Enum kullanıcı tarafında hiçbir şekilde kullanılmaz. Arkaplanda kodları kolaylaştırmak için kullanılır.
public enum Alan {
Sayisal,
Sozel,
EsitAgirlik,
Dil
}
public Alan alani;
alani = Alan.Sayisal;
*Access Modifier
public, private, internet, protected ...
/// Encapsulation ///
*Field
public string adi;
*Property
public string getAdi(){}
veya
public string Adi{ get; set; }
veya
public string Adi {
get{
return adi;
}
set {
adi = value;
}
}
*Property kullanılırsa eğer field private yapılır. Property public olur.
Field ismi küçük, property ismi büyük olur.
/// end.Encapsulation ///
*Constructor
Default olarak bir constructor vardır.
Eğer bir constructor eklenir ise default olan devre dışı kalır.
Dolayısı ile parametresiz constructor devre dışı kalır. Kullanmak için
oluşturmak gerekir.
*Overload
Aynı isimde birden fazla tanımlanan fonksiyonların imzasıdır.
*Object Initializer
Personel p = new Personel {
adi = "korhan",
soyadı = "özbek"
}