{"id":27755,"date":"2025-08-18T13:30:26","date_gmt":"2025-08-18T10:30:26","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/"},"modified":"2025-08-18T13:30:26","modified_gmt":"2025-08-18T10:30:26","slug":"go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/","title":{"rendered":"Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!"},"content":{"rendered":"<p>Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!<\/p>\n<p>Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz.  Java&#8217;n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go&#8217;nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go&#8217;dan gelen bir geli\u015ftirici i\u00e7in Java&#8217;n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor.  Java&#8217;n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.<\/p>\n<h2>Java&#8217;da S\u0131n\u0131flar ve Nesneler: Temelleri Kavramak<\/h2>\n<p>Go&#8217;da yap\u0131lar\u0131 (structs) ve y\u00f6ntemleri (methods) kullanarak nesne benzeri davran\u0131\u015flar elde ederiz. Ancak Java&#8217;da her \u015fey s\u0131n\u0131flar etraf\u0131nda d\u00f6ner. Bir s\u0131n\u0131f, nesnelerin \u015fablonudur; nesneler ise bu \u015fablonlardan olu\u015fturulan somut \u00f6rneklerdir.  Bir s\u0131n\u0131f, alanlar\u0131 (fields\/attributes) ve metodlar\u0131 (methods) i\u00e7erir. Alanlar nesnenin verilerini, metodlar ise nesnenin davran\u0131\u015flar\u0131n\u0131 tan\u0131mlar.  Go&#8217;nun a\u00e7\u0131k ve \u00f6zl\u00fc yap\u0131s\u0131ndan farkl\u0131 olarak, Java&#8217;da eri\u015fim belirleyiciler (public, private, protected) kullanarak s\u0131n\u0131f \u00fcyelerinin g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc kontrol edebiliriz.<\/p>\n<pre><code class=\"language-java\">public class K\u00f6pek {\n    public String isim;\n    private String cins;\n\n    public K\u00f6pek(String isim, String cins) {\n        this.isim = isim;\n        this.cins = cins;\n    }\n\n    public void havla() {\n        System.out.println(isim + \" havl\u0131yor!\");\n    }\n\n    public String getCins() { \/\/ Getter metodu\n        return cins;\n    }\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu basit <code>K\u00f6pek<\/code> s\u0131n\u0131f\u0131, <code>isim<\/code> (public), <code>cins<\/code> (private) alanlar\u0131n\u0131 ve <code>havla()<\/code> metodunu tan\u0131mlar. <code>cins<\/code> alan\u0131n\u0131n private olmas\u0131, d\u0131\u015far\u0131dan do\u011frudan eri\u015fimini engeller ve kaps\u00fclleme prensibini sa\u011flar. Getter metodlar\u0131 ile bu verilere kontroll\u00fc eri\u015fim sa\u011flanabilir.  Go'nun  daha az formal yap\u0131s\u0131 ile Java'n\u0131n bu kat\u0131 yap\u0131s\u0131 aras\u0131ndaki fark, ba\u015flang\u0131\u00e7ta kafa kar\u0131\u015f\u0131kl\u0131\u011f\u0131na yol a\u00e7abilir. Ancak, b\u00fcy\u00fck projelerde bu yap\u0131 daha iyi organizasyon ve s\u00fcrd\u00fcr\u00fclebilirlik sa\u011flar.<\/p>\n<h2>Kal\u0131t\u0131m: S\u0131n\u0131flar Aras\u0131nda Ba\u011flant\u0131 Kurmak<\/h2>\n<p>Java'da kal\u0131t\u0131m, bir s\u0131n\u0131f\u0131n ba\u015fka bir s\u0131n\u0131ftan \u00f6zellik ve davran\u0131\u015flar\u0131 miras almas\u0131n\u0131 sa\u011flar.  Bu, kod tekrar\u0131n\u0131 azalt\u0131r ve kodun daha d\u00fczenli olmas\u0131n\u0131 sa\u011flar.  Ana s\u0131n\u0131f (superclass) ve alt s\u0131n\u0131f (subclass) kavramlar\u0131n\u0131 anlamak \u00f6nemlidir. Alt s\u0131n\u0131f, ana s\u0131n\u0131fta tan\u0131mlanan t\u00fcm public ve protected \u00fcyelerini miras al\u0131r ve kendi \u00fcyelerini ekleyebilir veya varolan \u00fcyeleri ge\u00e7ersiz k\u0131labilir (override).<\/p>\n<pre><code class=\"language-java\">public class Hayvan {\n    public String isim;\n\n    public Hayvan(String isim) {\n        this.isim = isim;\n    }\n\n    public void sesCikar() {\n        System.out.println(\"Bir ses \u00e7\u0131kar\u0131yor...\");\n    }\n}\n\npublic class Kedi extends Hayvan {\n    public Kedi(String isim) {\n        super(isim);\n    }\n\n    @Override\n    public void sesCikar() {\n        System.out.println(isim + \" miyavl\u0131yor!\");\n    }\n}<\/pre>\n<p><\/code><\/p>\n<p><code>Kedi<\/code> s\u0131n\u0131f\u0131, <code>Hayvan<\/code> s\u0131n\u0131f\u0131ndan kal\u0131t\u0131m al\u0131r ve <code>sesCikar()<\/code> metodunu ge\u00e7ersiz k\u0131larak kediye \u00f6zg\u00fc bir davran\u0131\u015f tan\u0131mlar.  Bu \u00f6rnek, Java'da kal\u0131t\u0131m\u0131n nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 ve kod tekrar\u0131n\u0131 nas\u0131l azaltt\u0131\u011f\u0131n\u0131 g\u00f6stermektedir.  Go'da bu yap\u0131 benzer i\u015flevsellik i\u00e7in kompozisyon ve aray\u00fczleri kullan\u0131r.  Ancak, Java'n\u0131n hiyerar\u015fik yap\u0131s\u0131, daha karma\u015f\u0131k durumlar i\u00e7in farkl\u0131 bir d\u00fc\u015f\u00fcnce bi\u00e7imini gerektirir.<\/p>\n<h2>\u00c7ok Bi\u00e7imlilik: Birden Fazla Formda Var Olmak<\/h2>\n<p>\u00c7ok bi\u00e7imlilik, bir referans de\u011fi\u015fkeninin farkl\u0131 s\u0131n\u0131flar\u0131n nesnelerini g\u00f6sterebilmesi anlam\u0131na gelir.  Bu, ayn\u0131 metod \u00e7a\u011fr\u0131s\u0131n\u0131n, farkl\u0131 s\u0131n\u0131flardaki nesneler i\u00e7in farkl\u0131 davran\u0131\u015flar \u00fcretmesine olanak tan\u0131r.  Bu \u00f6zellik, \u00f6zellikle geni\u015f s\u0131n\u0131f hiyerar\u015filerinde kodun daha esnek ve geni\u015fletilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-java\">public class Hayvan {\n    public void sesCikar() {\n        System.out.println(\"Bir ses \u00e7\u0131kar\u0131yor...\");\n    }\n}\n\npublic class K\u00f6pek extends Hayvan {\n    @Override\n    public void sesCikar() {\n        System.out.println(\"Havl\u0131yor!\");\n    }\n}\n\npublic class Kedi extends Hayvan {\n    @Override\n    public void sesCikar() {\n        System.out.println(\"Miyavl\u0131yor!\");\n    }\n}\n\npublic class Main {\n    public static void main(String[] args) {\n        Hayvan hayvan1 = new K\u00f6pek();\n        Hayvan hayvan2 = new Kedi();\n        hayvan1.sesCikar(); \/\/ Havl\u0131yor!\n        hayvan2.sesCikar(); \/\/ Miyavl\u0131yor!\n    }\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>Hayvan<\/code> tipi bir de\u011fi\u015fken, hem <code>K\u00f6pek<\/code> hem de <code>Kedi<\/code> nesnelerini tutabilir ve <code>sesCikar()<\/code> metodu, her iki nesne i\u00e7in de farkl\u0131 davran\u0131\u015flar g\u00f6sterir.  Go'nun aray\u00fczleri benzer bir esneklik sa\u011flar, ancak Java'n\u0131n kal\u0131t\u0131m mekanizmas\u0131 daha do\u011frudan bir ili\u015fki kurar.<\/p>\n<h2>Soyut S\u0131n\u0131flar ve Aray\u00fczler: Tasar\u0131m Desenleri<\/h2>\n<p>Soyut s\u0131n\u0131flar, baz\u0131 metodlar\u0131 soyut (implemente edilmemi\u015f) olarak tan\u0131mlayan s\u0131n\u0131flard\u0131r.  Soyut metodlar, alt s\u0131n\u0131flarda mutlaka implement edilmelidir.  Aray\u00fczler ise yaln\u0131zca metod imzalar\u0131 i\u00e7eren ve hi\u00e7bir alan i\u00e7ermeyen s\u0131n\u0131flard\u0131r.  Bir s\u0131n\u0131f birden fazla aray\u00fcz\u00fc uygulayabilir.  Bu, \u00e7oklu kal\u0131t\u0131m benzeri bir davran\u0131\u015f sa\u011flar.  Soyut s\u0131n\u0131flar ve aray\u00fczler, kodun daha mod\u00fcler ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-java\">abstract class Hayvan {\n    abstract void sesCikar();\n}\n\ninterface Y\u00fcr\u00fcyen {\n    void y\u00fcr\u00fc();\n}\n\nclass K\u00f6pek extends Hayvan implements Y\u00fcr\u00fcyen {\n    @Override\n    void sesCikar() {\n        System.out.println(\"Hav hav!\");\n    }\n\n    @Override\n    public void y\u00fcr\u00fc() {\n        System.out.println(\"K\u00f6pek y\u00fcr\u00fcyor...\");\n    }\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>Hayvan<\/code> soyut bir s\u0131n\u0131f, <code>Y\u00fcr\u00fcyen<\/code> ise bir aray\u00fczd\u00fcr. <code>K\u00f6pek<\/code> s\u0131n\u0131f\u0131 hem <code>Hayvan<\/code>dan kal\u0131t\u0131m al\u0131r hem de <code>Y\u00fcr\u00fcyen<\/code> aray\u00fcz\u00fcn\u00fc uygular.  Bu, daha karma\u015f\u0131k ve hiyerar\u015fik s\u0131n\u0131f yap\u0131lar\u0131n\u0131 y\u00f6netmede \u00f6nemli bir rol oynar.  Go'nun aray\u00fczleri, Java'daki aray\u00fczlere olduk\u00e7a benzer i\u015flevsellik sa\u011flar, ancak Go'da \u00e7oklu kal\u0131t\u0131m desteklenmedi\u011fi i\u00e7in, Java'n\u0131n bu \u00f6zelli\u011fini direkt e\u015fle\u015ftirmek m\u00fcmk\u00fcn de\u011fildir.<\/p>\n<h2>\u0130leri D\u00fczey Konular: Generics ve Exception Handling<\/h2>\n<p>Java'n\u0131n ileri d\u00fczey \u00f6zelliklerini anlamak i\u00e7in, generics (genel tipler) ve exception handling (istisna y\u00f6netimi) kavramlar\u0131n\u0131 \u00f6\u011frenmek gereklidir. Generics, kodun daha g\u00fcvenli ve yeniden kullan\u0131labilir olmas\u0131n\u0131 sa\u011flayan bir mekanizmad\u0131r. Exception handling ise program\u0131n beklenmedik hatalarla nas\u0131l ba\u015fa \u00e7\u0131kaca\u011f\u0131n\u0131 belirler.  Go, bu konularda farkl\u0131 bir yakla\u015f\u0131m benimser. Go'nun error handling mekanizmas\u0131, Java'n\u0131n exception handling sisteminden daha yal\u0131n ve basittir. Generics'e benzer i\u015flevsellik, Go'nun genel tiplerle sa\u011flan\u0131r.<\/p>\n<pre><code class=\"language-java\">public class Kutum<T> {\n    private T i\u00e7erik;\n\n    public Kutum(T i\u00e7erik) {\n        this.i\u00e7erik = i\u00e7erik;\n    }\n\n    public T get\u0130\u00e7erik() {\n        return i\u00e7erik;\n    }\n}\n\npublic class Main {\n    public static void main(String[] args) {\n        Kutum<Integer> sayiKutusu = new Kutum<>(10);\n        Kutum<String> metinKutusu = new Kutum<>(\"Merhaba\");\n        System.out.println(sayiKutusu.get\u0130\u00e7erik()); \/\/ 10\n        System.out.println(metinKutusu.get\u0130\u00e7erik()); \/\/ Merhaba\n    }\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnek, Java'da generics'in nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 g\u00f6sterir.  <code>Kutum<\/code> s\u0131n\u0131f\u0131, T tipindeki verileri saklayabilir.  Bu T tipi, <code>Integer<\/code> veya <code>String<\/code> gibi belirli bir tip ile de\u011fi\u015ftirilebilir.<\/p>\n<p>Java'daki istisna y\u00f6netimi, <code>try-catch<\/code> bloklar\u0131 kullan\u0131larak yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-java\">try {\n    \/\/ Potansiyel olarak hata verebilecek kod\n} catch (Exception e) {\n    \/\/ Hata yakalama ve i\u015fleme\n}<\/pre>\n<p><\/code><\/p>\n<h2>Go Geli\u015ftiricisi \u0130\u00e7in Java \u00d6\u011frenme Yol Haritas\u0131<\/h2>\n<p>* <strong>Yeni Ba\u015flayan:<\/strong>  Temel Java s\u00f6zdizimini, s\u0131n\u0131flar, nesneler ve eri\u015fim belirleyicilerini \u00f6\u011frenmekle ba\u015flay\u0131n.  Basit s\u0131n\u0131f \u00f6rnekleri olu\u015fturarak uygulama yap\u0131n.<\/p>\n<p>* <strong>Orta Seviye:<\/strong> Kal\u0131t\u0131m, \u00e7ok bi\u00e7imlilik ve soyut s\u0131n\u0131flar\u0131 \u00f6\u011frenin.  Daha karma\u015f\u0131k s\u0131n\u0131f hiyerar\u015fileri olu\u015fturarak ve bunlar\u0131 kullanarak uygulamalar geli\u015ftirin.  Exception handling ve temel tasar\u0131m desenlerini \u00f6\u011frenin.<\/p>\n<p>* <strong>\u0130leri Seviye:<\/strong> Generics, lambda ifadeleri, stream API's\u0131 ve daha geli\u015fmi\u015f tasar\u0131m desenleri gibi ileri d\u00fczey konular\u0131 \u00f6\u011frenin.  B\u00fcy\u00fck \u00f6l\u00e7ekli Java projelerinde \u00e7al\u0131\u015farak deneyim kazan\u0131n.  Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">Fatih Soysal'\u0131n web sitesini<\/a> ziyaret edebilirsiniz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Vaka \u00c7al\u0131\u015fmalar\u0131<\/h2>\n<p>Bir e-ticaret uygulamas\u0131 d\u00fc\u015f\u00fcn\u00fcn.  \u00dcr\u00fcnler, kullan\u0131c\u0131lar ve sipari\u015fler gibi nesneleri modellemek i\u00e7in s\u0131n\u0131flar kullanabilirsiniz.  \u00dcr\u00fcn s\u0131n\u0131f\u0131n\u0131n alt s\u0131n\u0131flar\u0131 olarak farkl\u0131 \u00fcr\u00fcn kategorileri olu\u015fturabilirsiniz.  Sipari\u015f s\u0131n\u0131f\u0131, kullan\u0131c\u0131 ve \u00fcr\u00fcn s\u0131n\u0131flar\u0131na referanslar i\u00e7erebilir. Bu sayede, nesneler aras\u0131nda ili\u015fkiler kurulmu\u015f olur.<\/p>\n<p>Bir ba\u015fka \u00f6rnek olarak, bir oyun geli\u015ftirme senaryosu ele al\u0131nabilir.  Oyun karakterleri, silahlar ve oyun d\u00fcnyas\u0131n\u0131n di\u011fer unsurlar\u0131 s\u0131n\u0131flar halinde modellenebilir.  Karakter s\u0131n\u0131f\u0131, hareket ve sald\u0131r\u0131 metodlar\u0131 i\u00e7erebilir.  Kal\u0131t\u0131m, farkl\u0131 karakter t\u00fcrleri olu\u015fturmak i\u00e7in kullan\u0131labilir.  \u00d6rne\u011fin, bir \"B\u00fcy\u00fcc\u00fc\" s\u0131n\u0131f\u0131 bir \"Karakter\" s\u0131n\u0131f\u0131ndan kal\u0131t\u0131m alabilir ve \u00f6zel yetenekleri ekleyebilir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Go'dan Java'ya ge\u00e7i\u015f, ba\u015flang\u0131\u00e7ta zorlay\u0131c\u0131 olabilir, ancak bu makaledeki ad\u0131mlar\u0131 izleyerek ve pratik yaparak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rabilirsiniz.  Java'n\u0131n OOP yakla\u015f\u0131m\u0131, b\u00fcy\u00fck ve karma\u015f\u0131k projeler i\u00e7in daha d\u00fczenli ve s\u00fcrd\u00fcr\u00fclebilir bir kod yap\u0131s\u0131 sa\u011flar.  Go'nun yal\u0131n yakla\u015f\u0131m\u0131 ile Java'n\u0131n daha detayl\u0131 yakla\u015f\u0131m\u0131 aras\u0131ndaki fark\u0131 anlamak, ba\u015far\u0131l\u0131 bir ge\u00e7i\u015f i\u00e7in \u00f6nemlidir.<\/p>\n<p><strong>S\u0131k\u00e7a Sorulan Sorular:<\/strong><\/p>\n<p>1. <strong>Go'daki aray\u00fczler ile Java'daki aray\u00fczler aras\u0131ndaki farklar nelerdir?<\/strong> Go'da bir aray\u00fcz, yaln\u0131zca metod imzalar\u0131 belirtir ve bir s\u0131n\u0131f\u0131n birden fazla aray\u00fcz\u00fc uygulayabilir. Java'da da benzer \u015fekilde birden fazla aray\u00fcz uygulanabilir. Ancak, Java'da aray\u00fczler, Go'da oldu\u011fu kadar esnek de\u011fildir.<\/p>\n<p>2. <strong>Java'da garbage collection nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/strong> Java'n\u0131n otomatik \u00e7\u00f6p toplama mekanizmas\u0131, kullan\u0131lmayan nesnelerin belle\u011finden otomatik olarak temizlenmesini sa\u011flar.  Bu, bellek y\u00f6netimiyle ilgili sorunlar\u0131 azalt\u0131r.<\/p>\n<p>3. <strong>Java'da \u00e7oklu kal\u0131t\u0131m m\u00fcmk\u00fcn m\u00fcd\u00fcr?<\/strong> Hay\u0131r, Java'da \u00e7oklu kal\u0131t\u0131m s\u0131n\u0131flar i\u00e7in m\u00fcmk\u00fcn de\u011fildir. Ancak aray\u00fczler sayesinde \u00e7oklu kal\u0131t\u0131m benzeri bir davran\u0131\u015f elde edilebilir.<\/p>\n<p>4. <strong>Java'da static keyword'\u00fc ne i\u015fe yarar?<\/strong> Static keyword'\u00fc, bir \u00fcyenin s\u0131n\u0131fa ait oldu\u011funu, de\u011fil de nesneye ait oldu\u011funu belirtir.  Static metodlar, bir nesne \u00f6rne\u011fi olu\u015fturulmadan \u00e7a\u011fr\u0131labilir.<\/p>\n<p>5. <strong>Java'da design pattern'leri neden \u00f6nemlidir?<\/strong> Design pattern'leri, s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlar i\u00e7in denenmi\u015f ve test edilmi\u015f \u00e7\u00f6z\u00fcmler sunar.  Bunlar\u0131 kullanarak, kodun daha mod\u00fcler, yeniden kullan\u0131labilir ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again! Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-27755","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Go Geli\u015ftiricileri i\u00e7in Java&#039;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!<\/title>\n<meta name=\"description\" content=\"Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz. Java&#039;n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go&#039;nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go&#039;dan gelen bir geli\u015ftirici i\u00e7in Java&#039;n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor. Java&#039;n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Go Geli\u015ftiricileri i\u00e7in Java&#039;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!\" \/>\n<meta property=\"og:description\" content=\"Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz. Java&#039;n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go&#039;nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go&#039;dan gelen bir geli\u015ftirici i\u00e7in Java&#039;n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor. Java&#039;n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-18T10:30:26+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!\",\"datePublished\":\"2025-08-18T10:30:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\"},\"wordCount\":1486,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\",\"name\":\"Go Geli\u015ftiricileri i\u00e7in Java'n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-08-18T10:30:26+00:00\",\"description\":\"Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz. Java'n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go'nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go'dan gelen bir geli\u015ftirici i\u00e7in Java'n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor. Java'n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Go Geli\u015ftiricileri i\u00e7in Java'n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!","description":"Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz. Java'n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go'nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go'dan gelen bir geli\u015ftirici i\u00e7in Java'n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor. Java'n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/","og_locale":"tr_TR","og_type":"article","og_title":"Go Geli\u015ftiricileri i\u00e7in Java'n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!","og_description":"Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz. Java'n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go'nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go'dan gelen bir geli\u015ftirici i\u00e7in Java'n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor. Java'n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-08-18T10:30:26+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!","datePublished":"2025-08-18T10:30:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/"},"wordCount":1486,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/","url":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/","name":"Go Geli\u015ftiricileri i\u00e7in Java'n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-08-18T10:30:26+00:00","description":"Go dilinin yal\u0131nl\u0131\u011f\u0131 ve performans\u0131ndan gelen g\u00fcvenle Java d\u00fcnyas\u0131na ad\u0131m atan bir Go geli\u015ftiriciyseniz, kendinizi beklenmedik bir karma\u015fan\u0131n i\u00e7inde bulabilirsiniz. Java'n\u0131n nesne y\u00f6nelimli programlama (OOP) yakla\u015f\u0131m\u0131, Go'nun minimalist felsefesinden olduk\u00e7a farkl\u0131d\u0131r. Bu makale, Go'dan gelen bir geli\u015ftirici i\u00e7in Java'n\u0131n OOP \u00f6zelliklerini ad\u0131m ad\u0131m a\u00e7\u0131klayarak bu ge\u00e7i\u015fi kolayla\u015ft\u0131rmay\u0131 hedefliyor. Java'n\u0131n s\u0131n\u0131f hiyerar\u015fileri, kal\u0131t\u0131m ve \u00e7ok bi\u00e7imlilik gibi konular\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve pratik kod \u00f6rnekleriyle ele alaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/go-gelistiricileri-icin-javanin-nesne-yonelimli-karmasasi-oops-i-did-it-again\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Go Geli\u015ftiricileri i\u00e7in Java&#8217;n\u0131n Nesne Y\u00f6nelimli Karma\u015fas\u0131: OOPs I Did It Again!"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/27755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=27755"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/27755\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=27755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=27755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=27755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}