1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.
  2. Merhaba Ziyaretçi foruma kayıt olarak hediye kodu alabilirsin!
  3. Merhaba Ziyaretçi ! IP: play.LifeMCServer.com SkyBlock Sürüm: 1.7.X-1.8.X Senide aramızda görmek isteriz.

Ders Java - Nedir bu static ve this?

'Java' forumunda TheDark_Gamer tarafından 7 Aralık 2018 12:36 tarihinde açılan konu

  1. TheDark_Gamer

    TheDark_Gamer Developer & Owner Sunucu Sahibi Forum Kurucusu

    Katılım:
    19 Mart 2017
    Mesaj:
    1,481
    Alınan Beğeniler:
    2,317
    Ödül Puanları:
    728
    Nick:
    TheDark_Gamer
    Gerçek ad:
    Mustafa ÖNCEL
    Skype :
    mustafaoncel92
    Herkese Merhabalar!
    Sanırım bu forumda ki ilk java ile alakalı konum. Türkçe kaynaklar zor bulunduğundan dolayı bu konularda kendi bildiklerimden önemli buldukları mı ve benimde yolun başındayken en çok karşılaştığım ama aslında basit olan sorunların çözümlerini sadece sunmayıp nedenleriyle de açıklayacağım.

    Bir çok kişinin karşılaştığı basit bir problem var, mantığını anlar ve Java'yı öğrenir iseniz sonradan bu karşılaştığınız soruna gülüp geçebilirsiniz, buradan da bir anınız olur.

    "You are making progress if each mistake is a new one."
    (Her hata yeni bir hatayı doğuruyor ise; ilerleme kaydediyorsun.)

    Araya bu tür ingilizce türkçe farketmeksizin sözler sıkıştırabilirim, anlamlı olması bir şart olmasa da genelde anlamlı veya mesaj veren sözler olacaklardır. Programlama dillerini ve bir çok şeyi araştırır, öğrenir iken gereken en önemli şey olan İngilizce bilginizi yüksek tutmanızı öneriyorum çünkü bir çok döküman ingilizce olarak yazılıyor ve türkçeye çevrildiğinde bazen anlamsız / komplike kelimeler / anlamlar ortaya çıkabiliyor.

    Lütfen bazı yerlerde ingilizce terimler kullandığım için beni suçlamayın, tamamen türkçe olarak öğrenip araştırmanız imkansız, elinde sonunda bu terimleri öğreneceksiniz, ben sadece bu işlemi hızlandırıyorum, çoğu zaman da zaten parantez içinde türkçesini veyahut onu yazmaz isem daha sonrasında açıklamasını yazıyorum. Yinede sorunuz var ise yorum atmakta veya bundan daha önemlisi araştırmakta özgürsünüz.

    Nedir bu static?

    Static, Java'da bir modifier'dır. Peki modifier ne diye sorar iseniz, modifier türkçesi değiştiriciler'dir. Değiştiriciler'i konfigüre etmek anlamında algılayabilirsiniz. Static, final, public gibi modifier (değiştiriciler) kullanarak variableleri, methodları (fonksiyon da denir, aslında denmez ama daha kolay anlayın diye .P) ve bir çok şeyi konfigüre edebiliriz.

    Static, bu değiştiricilerden / konfigüre edicilerden biridir. Bildiğiniz veya bilmediğiniz üzere Java, Objeye yönelik bir programlama dilidir. Yani tüm classlar varsayılan olarak java.lang.Object classından türer. Türemek ne derseniz javadaki extends ve implements kelimelerinin karşılığıdır. En basit şekilde böyle açıklanabilir yani.

    Konumuz static olduğu için diğer şeylere olabildiğince az değinerek özetlemeye çalışıyorum. Eğer daha fazla bilgi edinmek istediğiniz bir şey var ise Google'a yazmanız yeterli. Bu konuların amacı da bu zaten. Size her şeyi ben öğretemem ve her konu da ben yardım edemem. Bir yerden sonra kendinizi eğitip sorunlarınıza kendiniz çözüm bulmanız gerekecek.

    This nedir, ne değildir?

    This, javada şuan yürütülen kodun ait olduğu objeye bir referanstır. Kod yürütülüyor ise; This asla null (boş / olmayan değer) olamaz. Peki bunun static ile bağlantısı nedir diye soracak olur iseniz; Static class'ın kendisine aittir, static olmayan her şey ise objeye spesifiktir. Yani bir şeyi static yapar isek objeye spesifik şeylere; dolayısı ile de this referansına erişemeyiz. This kelimesi çoğu zaman gereksizdir (static değil ise objeye aittir, ve dolayısı ile this kullanılır) ve başlangıçta kullanmanızı önermem çünkü compiler (IDE) bu işi sizin için yapacaktır.

    Bukkit ile nasıl kullanılır?

    Bukkit, olması gerektiği gibi her plugini bir birinden ayırmak için her plugine yani eklentiye özel objeler oluşturur. Bu objeleri oluşturmak için gereken bilgiyi aslında Bukkit'e biz sağlarız, bukkit sadece bizim pluginimizi bizim verdiğimiz bilgilerden obje olarak oluşturur ve bize sağlar.

    Bir kullanım örneği yok mu?
    Kod (Java):
    1.  
    2. package me.takmaad.projeismi; // değiştirin
    3.  
    4. public final class Başlangıç {
    5.  
    6.     // static sabit değer, final = sabit, değişemez (literal, constant, readonly vb de denir)
    7.     static final String FORUM_LİNK = "https://www.lifemcserver.com/forum/";
    8.  
    9.     public static void main(final String[] komutSatırıArgümanları) {
    10.  
    11.         // getURL static olmadığı için new Konu(...) kullandık.
    12.         System.out.println(new Konu(3285).getURL()); // konu ID'yi değiştirebilirsiniz
    13.  
    14.     }
    15.  
    16.     public static final class Konu {
    17.  
    18.         private final int id;
    19.  
    20.         public Konu(final int id) {
    21.  
    22.             this.id = id;
    23.  
    24.         }
    25.  
    26.        public int getID() {
    27.  
    28.             return this.id;
    29.  
    30.        }
    31.  
    32.        public String getURL() { // FORUM_LINK static olduğu için new Başlangıç() yerine direk Başlangıç kullandık.
    33.  
    34.            return Başlangıç.FORUM_LİNK + "konular/" + this.getID() + "/";
    35.  
    36.        }
    37.  
    38.     }
    39.  
    40. }
    41.  

    Özet

    Static - Bir değiştirici.
    This - Şuan yürütülen koda ait objeye bir referans.

    Eğer bu konuya "this can not be used in a static context" tarzı bir hata ile karşılaştıktan sonra geldi iseniz, static değiştiricisini kaldırmanız sorunu çözecektir. Eğer "non static method can't be accessed without instance" tarzı bir hata ile geldiyseniz de static değiştiricisi eklemeniz sorunu çözecektir.

    Sağlıcakla kalın, sonraki konular da görüşmek üzere..​
     
    AssassinDaan, Cnty_Emo ve mbboyun bunu beğendi.

Bu Sayfayı Paylaş

Bu Konuya Bakan Kullanıcılar (Kullanıcı: 0, Ziyaretçi: 0)

Yükleniyor...