Yükleniyor...

static

static int tally alanı ve tally = tally + 1; çalıştıran static void Mark() metodu olan bir Cup sınıfı yazın. Pine içinde Main'i tutun, Cup.Mark(); çağrısını iki kez yapın, sonra Cup.tally 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: 2. Metot nesne değişkeni üzerinden değil, sınıf adı üzerinden çalışır. Sınıfta tek bir paylaşılan tally — bu sayfanın öğrettiği budur. Başlangıç genel sınıf adını Pine tutun.

Sınıf adına ait üye

instance-methods sayfasında j.bump() çağrısını bir jar değişkeni üzerinden yaptınız. Burada alan ve metot Cup'ın kendisindedir. Onlara Cup.Mark() ve Cup.tally ile erişirsiniz. Bu sayfadaki çağrı için new Cup(...) gerekmez. Her Mark çağrısı aynı tally'ye bir ekler.
Pine dosyasını açın. Başlangıç sınıf adı Pine kalır. Bu sayfa başlangıç adını değiştirmez. Main'de hâlâ yalnızca bump demosu varsa Jar j = new Jar(3); kalıntısını silin. Her türlü Jar sınıfı kalıntısını silin. Her türlü Tin kalıntısını silin. ReadLine satırını silin. Bıraktığınız dosyada yazı beklenmez.
Pine süslü parantezlerinin dışında — hâlâ aynı dosyada — public class Cup yazın. İçinde static int tally; bildirin. Sonra static metodu yazın: static void Mark() { tally = tally + 1; }. Bu sayfada yapıcı ve örnek alan yok. Çalıştırmadan önce dosyayı kaydedin.
Metot başlığında hem static hem void gerekir. static sözcüğü üyenin sınıf adına ait olduğunu işaretler. void hâlâ Mark'ın yazdırılacak bir değer döndürmediği anlamına gelir. Başlıkta her iki sözcüğü de yazdığınız sırayla tutun.

Cup with static Mark

csharp
using System;

public class Cup
{
    static int tally;

    static void Mark()
    {
        tally = tally + 1;
    }
}

Pine Mark'ı sınıf adı üzerinden çağırır

Pine'da public static void Main() kalır. Main içinde sırayla üç satır yazın: Cup.Mark();, yeniden Cup.Mark();, sonra Console.WriteLine(Cup.tally);. Her çağrı bir ekler. Yazım paylaşılan sayıyı gösterir. Bu sayfada Jar j = new Jar(3); veya j.bump(); yazmazsınız. Bu instance-methods dersiydi.

Pine two Marks

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Cup.Mark();
        Cup.Mark();
        Console.WriteLine(Cup.tally);
    }
}

public class Cup
{
    static int tally;

    static void Mark()
    {
        tally = tally + 1;
    }
}

Bıraktığınız dosyayı baştan okuyun. using System; kısa adları hazırlar. public class Pine başlangıç sınıfıdır. public static void Main() çalışma zamanının başladığı yerdir — Main'in kendisi zaten static'tir; bu yüzden program önce bir Pine nesnesi kurmadan başlayabilir. Cup.Mark() çağrısı sınıftaki Mark'a girer. Gövde tally = tally + 1 yazar. İlk çağrı tally'yi 0'dan 1'e taşır. İkinci çağrı 2'ye taşır. Sonra Main Cup.tally yazar ve ekran 2 gösterir.
dotnet run ile çalıştırın. Program tek satır yazar ve durur. Yazmanızı beklemez. dotnet run bekliyorsa dosyada hâlâ ReadLine vardır. O satırı silin ve Pine'da iki Cup.Mark(); ile yazımı, Cup'ta Mark'ı tutun. Ekran 2 gösterir. Ekran 4 veya 5 gösteriyorsa Jar bump demosu kalıntısı hâlâ çalışıyor olabilir. Ekran 0 gösteriyorsa Mark çağrıları eksik olabilir veya yazımdan sonra gelebilir.
Bu Main biçiminde önde Cup. olmadan Mark(); yazarsanız, bu sayfanın öğretmediği ek bağlantı eklemedikçe derleme reddeder. Cup.Mark(); tutun. Cup c = new Cup(); yazıp yine yalnız örnek metotlardan bahsederseniz static dersinden çıkmış olursunuz. Bu sayfanın hedefi sınıf adı çağrısıdır.

j.bump ile Jar kalıntısı karşılaştırması

instance-methods sayfasında j.bump() önde bir nesne isterdi. Tek bir jar'da değişiklik istediğinizde bu hâlâ işe yarar. Bu sayfadaki Cup.Mark() önde sınıf adını ister. Jar j = new Jar(3); j.bump(); Console.WriteLine(j.fill); kalıntısı başka bir derstir. Bu sayfa için Cup, Pine ve Cup.Mark(); tutun.
Daha sonra bir örnek metot icat edebilirsiniz. Bu ders paylaşılan sayaçları sınıfta tutar; böylece new olmadan iki çağrı tek tally'yi paylaşır. Yalnız Console.WriteLine(Cup); yazmak temiz 2 göstermez. Saklanan sayıyı görmek için Console.WriteLine(Cup.tally); yazın.

📊 j.bump vs Cup.Mark

Çağrı biçimi Nesne gerekir mi? Ne değişir
j.bump(); evet — jar değişkeni o jar'ın fill değeri
Cup.Mark(); hayır — sınıf adı paylaşılan Cup.tally

Her Mark çağrısı tarafından paylaşılan tek tally

Bu sayfada iki işaret için iki cup kurmanız gerekmez. İlk Cup.Mark(); ve ikinci Cup.Mark(); aynı static alana dokunur. static int tally'nin özü budur. Sonra nesneler eklerseniz, farklı bir tasarım icat etmedikçe yine o tek tally'yi paylaşırlar. Öğretim dosyası için iki sınıf adı çağrısı yeterlidir.
Ekran hâlâ 1 gösteriyorsa yalnızca bir Mark çağrısı olabilir veya çağrılar arasında bir yazım duruyor olabilir. Her ikisini de Console.WriteLine(Cup.tally); öncesinde tutun. Ekran 7 veya başka bir kalıntı sayı gösteriyorsa dosyada eski Tin veya Jar demosu olabilir. Cup.Mark(); iki kez ve Cup.tally üzerindeki yazımı tutun.

Static çağrıyı gizleyen hatalar

Mark üzerinden static kaldırmak onu örnek metoda çevirir. O zaman Main'den Cup.Mark(); derlemeyi bozar ve sayfa sınıf adı çağrısını öğretmeyi bırakır. Hem alana hem metoda static geri koyun. Jar dosyası hâlâ açık diye yalnız j.bump(); çağırmak da bu dersi gizler — Cup alıştırırken o demosu Main'den silin.
Bir tuzak: Mark yazmadan yalnız Main içinde Cup.tally = Cup.tally + 1; yazmak. İki atamadan sonra 2 yazdırabilir ama bu sayfanın yazmanızı istediği static metot biçimini atlar. Toplamanın metot gövdesine ait olması için iki Cup.Mark(); satırını tercih edin. new Cup() sonrası IntelliSense örnek çağrı önerirse bu alıştırma için görmezden gelin ve Cup.Mark(); ile kalın.

access için kalan

Bu sayfa üyelere sınıf adı üzerinden erişir: Cup.Mark() ve Cup.tally. Sonraki sayfa — access — bir üyeyi kimin göreceğini belirleyen public ve private gibi sözcükleri gösterir. Burada static ile kalın. Zaten kullanmıyorsanız her satıra erişim anahtar sözcükleri icat etmeyin; ders hedefi sınıf adı çağrısı ve paylaşılan alandır.
Cup'ı Pine süslü parantezlerinin içine gömmeyin. Bu sayfada iki sınıf dosyada kardeş olarak durur. Derleme Pine'ı derlerken Cup'ı bulamıyorsa public class Cup'ın aynı dosyada olduğunu kontrol edin. Ekran 0 gösteriyorsa Mark hiç çalışmamış olabilir — yazımdan önce iki Cup.Mark(); satırını tutun. Derleme Mark'ın nesne istediğini söylüyorsa metot başlığında hâlâ static olduğunu kontrol edin.

static int tally; bildirebilir, static void Mark() { tally = tally + 1; } yazabilir ve Pine.Main'den Cup.Mark(); çağrısını iki kez yapıp sonra Cup.tally yazabilirsiniz. dotnet run ile çalıştırın. Ekran 2 gösterir. Static metot sınıf adı üzerinde çalıştı ve paylaşılan alanı değiştirdi. Mark'ı önce cup kurmadan sınıfın yapabildiği bir eylem olarak düşünün. Pine, dotnet run ile açtığınız kapı olarak kalır. Sonraki sayfa access; orada bazı üyeler diğer koda bilerek açılır veya kapanır.
Alanda ve metotta static tutun. Çağrının önünde sınıf adını tutun: Cup.Mark();. Yazımı Cup.tally üzerinde tutun. Bu üç alışkanlık, devam etmeden önce bu sayfanın kontrol noktasıdır. Main'de j.bump() demosu bırakmayın; ekran yanlışlıkla bir jar sayısı göstermesin.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
5
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 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