Yapıcılar
size adlı bir int alanı ve size = n; yapan bir Box(int n) yapıcısı olan Box sınıfını yazın. Pine içinde Main'i tutun ve Box b = new Box(4); ile bir box kurun, sonra b.size yazın. Her iki türü aynı öğretim dosyasında tutun; böylece dotnet run sade kalır. dotnet run ile çalıştırın. Ekran tek satır göstermelidir: 4. new'e verdiğiniz sayı yapıcıya ulaşır ve yapıcı, Main devam etmeden önce onu nesnede saklar. Alanı kurulum anında — yapıcının içinde — atamak bu sayfanın öğrettiği şeydir. Başlangıç genel sınıf adını Pine tutun.
new kurarken çalışan bir metot
Yapıcının adı sınıfla aynıdır. Ne void dönüş tipi vardır ne de başka bir dönüş tipi. Main new Box(4) yazdığında C# nesneyi kurar ve o yapıcıyı 4 ile n olarak çalıştırır. Yapıcı bitince değişken hazır nesneyi tutar. Bu sayfanın bütün işi budur: bir değeri new'e verin, yapıcının alanda saklamasına izin verin, sonra alanı yazın ki saklamanın işe yaradığını görün.
Pine dosyasını açın. Başlangıç sınıf adı Pine kalır. Bu sayfa başlatıcıyı yeniden adlandırmaz. Hâlâ Main'de tuttuğunuz her şey bir c.fill = 3; Cup atama kalıntısıysa silin. Artakalan her Cup sınıfını silin. Her ReadLine satırını silin. Tutacağınız dosyada yazı bekleyişi yoktur.
Pine'ın süslü parantezlerinin dışında — yine aynı dosyada — public class Box yazın. Süslü parantezlerin içinde int size; bildirin. Sonra yapıcıyı yazın: Box(int n) { size = n; }. Bu sayfada parametre adını size ile aynı yapmayın; böylece atama this sözcüğü olmadan net kalır. Bu sayfada Box içinde Main yoktur. Çalıştırmadan önce dosyayı kaydedin.
Alan satırı tek başına 4'ü nesneye koymaz. Bunu, new çağırdığında yapıcının gövdesi yapar. Yapıcıyı atlayıp yalnızca alanı bildirirseniz, sonra new Box(4) uymaz ve derleme çağrıdan şikâyet eder. Box içinde her iki parçayı tutun: alan ve ona yazan yapıcı.
using System;
public class Box
{
int size;
Box(int n)
{
size = n;
}
}
Pine, 4'ü new Box'a verir
Pine public static void Main() tutmaya devam eder. Main içinde Box b = new Box(4); sonra Console.WriteLine(b.size); yazın. Argüman 4, yapıcı parametresi n'e gider. Bu sayfada ayrı bir b.size = 4; satırına ihtiyacınız yoktur — yapıcı değeri zaten sakladı. Yazma satırı, tahmin etmeden yapıcının yaptığına güvenmeniz içindir. Bu sayfada c.fill = 3; yazmazsınız. O, alanlar dersiydi.
using System;
public class Pine
{
public static void Main()
{
Box b = new Box(4);
Console.WriteLine(b.size);
}
}
public class Box
{
int size;
Box(int n)
{
size = n;
}
}
Tutulan dosyayı yukarıdan okuyun. using System; kısa adları hazırlar. public class Pine başlatıcıdır. public static void Main() çalışma zamanının başladığı yerdir. new Box(4) ifadesi bir Box kurar ve Box(int n)'i n eşittir 4 ile çağırır. Gövde size = n yazar; böylece o nesnenin size'ı 4 olur. Sonra Main b.size yazar ve ekran 4 gösterir. Başka bir şey yazılmamalıdır.
dotnet run ile çalıştırın. Program bir satır yazar ve durur. Sizin bir şey yazmanızı beklemez. dotnet run bekliyorsa dosyada hâlâ ReadLine vardır. O satırı silin; Pine'da new Box(4) ile yazmayı tutun, yapıcı ise Box içinde kalsın. Ekran 4 gösterir. Ekran 3 gösteriyorsa artakalan bir c.fill = 3; yolu hâlâ çalışıyordur. Ekran ok gösteriyorsa eski bir Chip demosu dosyada kalmış olabilir. Yanlış satır gösteren bir ekran için .NET SDK'yı yeniden kurmayın.
Tek yapıcı bir int isterken new Box()'i argümansız yazarsanız derleme reddeder. Çağrıyı yapıcının parametre listesiyle eşleştirin. Yapıcı adının önüne void koyarsanız bu sıradan bir metot olur, yapıcı olmaz; new Box(4) o gövdeyi bu sayfanın beklediği gibi çalıştırmaz. Başlık Box(int n) gibi görünmelidir; void Box(int n) veya static int Box(int n) değil.
new sonrası atamayla karşılaştırma
Alanlar sayfasında new Cup() sonrasında c.fill = 3; yazıyordunuz. O hâlâ çalışır. Bu sayfa saklamayı yapıcının içine taşır; böylece değer nesne kurulurken konur. c.fill = 3; içeren artakalan bir Cup demosu başka derstir. Bu sayfa için Box ve Pine ile new Box(4) tutun. Pine'da hâlâ c.fill = 3; varsa ve bu dosyada Cup sınıfı yoksa o satırı kaldırın. Derleme sizin için Cup uydurmaz.
Yalnız Console.WriteLine(b); yazmak temiz bir 4 göstermez. Saklanan sayıyı görmek için Console.WriteLine(b.size); yazın. Nesne referansı tek başına alan değeri değildir. Bu deseni alanlar sayfasında öğrendiniz; yapıcının işini kontrol ederken burada da tutun.
Başka programlarda new sonrasında hâlâ alan atayabilirsiniz. Bu ders yalnızca yapıcı yolunu seçer; böylece ilk yararlı değer kurulum anında gelir. Bu sayfanın Pine demosunda iki stili karıştırmayın. Tek net yol yeter: new'e argüman, yapıcıda saklama, alanı yazma.
İki box, iki size
Her new Box(...) yapıcıyı ayrı bir nesne için yeniden çalıştırır. Box a = new Box(2); ve Box b = new Box(9); yazıp her iki size alanını yazabilirsiniz. İlk çağrı bir nesnede 2 saklar. İkinci çağrı başka nesnede 9 saklar. İki nesne tek bir size yuvasını paylaşmaz.
using System;
public class Pine
{
public static void Main()
{
Box a = new Box(2);
Box b = new Box(9);
Console.WriteLine(a.size);
Console.WriteLine(b.size);
}
}
public class Box
{
int size;
Box(int n)
{
size = n;
}
}
Yeniden dotnet run ile çalıştırın. Ekran bir satırda 2, sonraki satırda 9 göstermelidir. Her yapıcı çağrısı kendi argümanını kendi nesnesinde sakladı. Box b = a; yazmak ikinci bir nesne kurmaz — iki size istediğinizde iki new Box(...) çağrısı kullanın. Referansı kopyalamak, yapıcıyı iki kez çağırmakla aynı değildir.
Her iki satır aynı sayıyı gösteriyorsa, her new'in farklı argüman verdiğini ve sırayla a.size ile b.size yazdığınızı kontrol edin. Derleme ikinci new'de duruyorsa eksik parantez veya eski şekilden yanlış sınıf adı arayın. İlk satırı yapıştırıp argümanı değiştirmeyi unuttuğunuzda ikinci çağrıdaki küçük yazım hataları yaygındır.
Bu sayfa this için ne bırakır
Bu sayfa farklı adlarla size = n; yazar. Sonraki sayfa — this — adlar çarpışınca nesnenin kendi alanından nasıl söz edeceğinizi gösterir. Burada net parametre adı n ile kalın. Bu sayfada zaten bilmiyorsanız this.size uydurmayın; dersin hedefi new'den yapıcı çağrısıdır. this sözcüğü sonraki konudur; bugün n'yi size'a saklamak için zorunlu değildir.
Box'i Pine'ın süslü parantezlerinin içine yuvalamayın. Bu sayfada iki sınıf dosyada kardeştir. Derleme Pine'ı derlerken Box'i bulamıyorsa, public class Box'in aynı dosyada olduğunu kontrol edin. Ekran 0 gösteriyorsa yapıcıda atama eksik olabilir veya Main hâlâ size'ı hiç atamayan argümansız bir şekil kullanıyordur — Box(int n) { size = n; } ve new Box(4) tutun. Ekrandaki sıfır genellikle alanın varsayılanında kaldığı anlamına gelir; çünkü saklama hiç çalışmamıştır.
int size; bildirebilir, Box(int n) { size = n; } yazabilir ve Pine.Main'den Box b = new Box(4); ile kurabilirsiniz. dotnet run ile çalıştırın. Ekran 4 gösterir. Yapıcı, new nesneyi kurarken çalışır. Sayıyı kurulum anında verdiniz, yapıcı alanda sakladı ve yazma saklamayı kanıtladı. Yapıcıyı, Main'in new sonrasında devam etmeden önce çalışan hazırlık gibi düşünün. Pine, dotnet run ile açtığınız kapı olarak kalır. Sonraki sayfa this'tir; orada nesnenin kendi alanlarını metotlarında ve yapıcılarında adlandırmanın başka bir yolunu öğrenirsiniz.
Yapıcı başlığını void olmadan tutun. new üzerindeki argümanı tutun. b.size üzerindeki yazmayı tutun. Bu üç alışkanlık, ilerlemadan önce bu sayfanın kontrol noktasıdır.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek