{"id":343,"date":"2023-09-23T03:56:25","date_gmt":"2023-09-23T00:56:25","guid":{"rendered":"http:\/\/melic.com\/wp1\/?p=343"},"modified":"2023-09-23T03:56:25","modified_gmt":"2023-09-23T00:56:25","slug":"javada-inheritancemiras-nedir","status":"publish","type":"post","link":"https:\/\/melic.com\/wp1\/javada-inheritancemiras-nedir\/","title":{"rendered":"Java&#8217;da Inheritance(miras) Nedir?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">M\u0131s\u0131r&#8217;daki olmayan akrabalardan kalan miras konusu olmas\u0131n\u0131 tercih ederdim ama i\u015fte maalesef Tatooine&#8217;deki akrabalardan kalan miras s\u00f6z konusu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inheritance yani Miras!<br>\nOOP &#8211; Object Oriented Programming yani Nesne Y\u00f6nelimli Programlaman\u0131n en g\u00f6steri\u015fli prensibi herhalde miras olsa gerek. S\u0131n\u0131flar\u0131n di\u011fer s\u0131n\u0131flardan t\u00fcretilebildi\u011fi ve alt s\u0131n\u0131flar\u0131n \u00fcst s\u0131n\u0131flara ait alanlar ve metotlar\u0131 da miras ald\u0131\u011f\u0131n\u0131 ifade etmektedir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcst s\u0131n\u0131flar\u0131 superclass (\u00fcst\u00fcns\u0131n\u0131f ya da s\u00fcpers\u0131n\u0131f) ve t\u00fcretilmi\u015f yani \u00e7ocuk s\u0131n\u0131flar\u0131 ise subclass (alts\u0131n\u0131f) olarak tan\u0131mlar\u0131z.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Burada size birde CLASS yani S\u0131n\u0131f nedir basit bir \u00f6rnek vermeliyim.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"177\" src=\"https:\/\/melic.com\/wp1\/wp-content\/uploads\/2022\/10\/Class_Ornek-460x177.jpg\" alt=\"class_ornek\" class=\"wp-image-568\" srcset=\"https:\/\/melic.com\/wp1\/wp-content\/uploads\/2022\/10\/Class_Ornek-460x177.jpg 460w, https:\/\/melic.com\/wp1\/wp-content\/uploads\/2022\/10\/Class_Ornek-200x77.jpg 200w, https:\/\/melic.com\/wp1\/wp-content\/uploads\/2022\/10\/Class_Ornek.jpg 719w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Yukar\u0131daki resimde Omurgal\u0131lar SuperClass ve Memeliler de basit\u00e7e subclass. Bu ba\u011flamda bir \u00fcst s\u0131n\u0131f birden farkl\u0131 alts\u0131n\u0131flar\u0131 etkileyebilir ve alts\u0131n\u0131flar baz\u0131 \u00f6zellikleri ile benzerlik g\u00f6sterebilir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gelin Araba s\u0131n\u0131f\u0131 \u00f6rne\u011finden devam edelim. Araba \u00e7ok genel bir tip ve biz program\u0131m\u0131zda daha \u00f6zel bir \u015fey ar\u0131yor olabiliriz, mesela &#8220;AileArabasi&#8221; ve &#8220;SporAraba&#8221; gibi. Bunlar\u0131n ikisi subclass(alts\u0131n\u0131f) olarak superclass(\u00fcsts\u0131n\u0131f) olan Araba s\u0131n\u0131f\u0131na ait t\u00fcm &#8220;fields&#8221;(alanlar) ve &#8220;method&#8221;(metot)lar\u0131 miras olarak sahip olacak; ki bunlar her s\u0131n\u0131f i\u00e7in kendine ait \u00f6zellikleri olacakt\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E\u011fer aile arabas\u0131 s\u00f6z konusu ise bizim i\u00e7in koltuk say\u0131s\u0131 \u00f6nem kazanacak, AileArabasi sinifi tan\u0131mlamas\u0131da \u015f\u00f6yle olacakt\u0131r :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\npublic AileArabasi extends Araba {\n \/* t\u00fcretti\u011fimiz (extend) i\u00e7in kapad\u0131\u011f\u0131m\u0131z alanlar\n String model;\n String noPlaka;\n String renk;\n int noKapi; *\/\n int noKoltuk;\n\n\/\/ Yap\u0131c\u0131 Fonksiyon(Constructor function)\n\npublic AileArabasi(String model, String noPlaka, String renk, int noKapi, int yeniNoKoltuk) {\n super(model,noPlaka,renk,noKapi);\n noKoltuk = yeniNoKoltuk;\n }\n\n\/* devral\u0131nan metotlar:\n void basla(\n         System.out.println(\"Araba \u00c7al\u0131\u015ft\u0131!\");\n){}\n void sur(){}\n void elfreni(){}\n *\/\n }\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Buradaki iki anahtar kelime extends ve super()&#8217;dir. Birincisi JVM&#8217;ye yeni s\u0131n\u0131f\u0131n Araba \u00f6zelliklerini devralmas\u0131 gerekti\u011fini s\u00f6yler. \u0130kincisi, devral\u0131nan alanlar\u0131 ba\u015flatmak i\u00e7in Car yap\u0131c\u0131s\u0131n\u0131(constructor) \u00e7a\u011f\u0131r\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Super() y\u00f6nteminin(method) yap\u0131c\u0131daki (constructor) ilk ifade olmas\u0131 gerekir, aksi takdirde bir hata at\u0131l\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SportsCar s\u0131n\u0131f\u0131 hemen hemen ayn\u0131 g\u00f6r\u00fcnecektir, ancak burada motorun turbo\u015farjl\u0131 olup olmad\u0131\u011f\u0131n\u0131 bilmek mant\u0131kl\u0131d\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\npublic SporAraba extends Araba {\n  boolean turboCharged;\n\n  public SporAraba (String model, String  noPlaka, String renk, int noKapi, boolean turbo) \n  {\n      super(model,noPlaka,renk,noKapi);\n      turboCharged = turbo;\n  }\n }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Daha sonra de\u011fi\u015fkenleri \u015fu \u015fekilde bildirebiliriz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Araba araba = new Araba (\"genelAraba\",\"5332V\",\"gri\",4);\nAileArabasi fCar = new AileArabasi (\"aileArabasi \",\"1059S\", \"bej\", 4, 7);\nSporAraba sCar = new SporAraba (\"sporAraba\",\"BH93A\",\"kirmizi\", 2, true);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Yukar\u0131dan gelen kal\u0131t\u0131m nedeniyle, a\u00e7\u0131k\u00e7a beyan etmemi\u015f olsak bile t\u00fcm nesneler i\u00e7in start() y\u00f6ntemini \u00e7a\u011f\u0131rabiliriz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>car.basla();\nfCar.basla();\nsCar.basla();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ve \u00e7\u0131kt\u0131 \u015f\u00f6yle olacakt\u0131r :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Araba \u00c7al\u0131\u015ft\u0131!\nAraba \u00c7al\u0131\u015ft\u0131!\nAraba \u00c7al\u0131\u015ft\u0131!<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Veya di\u011fer miras al\u0131nabilecek alanlar :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>System.out.println(fCar.noKapi);\n System.out.println(sCar.noKapi);\n\n\/\/ 4\n\/\/ 2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bir s\u00fcper s\u0131n\u0131f bekledi\u011finizde, bir alt s\u0131n\u0131f\u0131n da ge\u00e7erli bir girdi oldu\u011funu unutmay\u0131n:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">void test(Araba araba){<br> araba.basla();<br> }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">test(fCar); \/\/valid<br>test(sCar); \/\/valid<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not: Bir s\u0131n\u0131f sadece tek bir super s\u0131n\u0131f(superclass) geni\u015fletebilir(extend)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u0131s\u0131r&#8217;daki olmayan akrabalardan kalan miras konusu olmas\u0131n\u0131 tercih ederdim ama i\u015fte maalesef Tatooine&#8217;deki akrabalardan kalan miras s\u00f6z konusu. Inheritance yani Miras! OOP &#8211; Object Oriented Programming yani Nesne Y\u00f6nelimli Programlaman\u0131n en g\u00f6steri\u015fli prensibi herhalde miras olsa gerek. S\u0131n\u0131flar\u0131n di\u011fer s\u0131n\u0131flardan t\u00fcretilebildi\u011fi ve alt s\u0131n\u0131flar\u0131n \u00fcst s\u0131n\u0131flara ait alanlar ve metotlar\u0131&#8230;<\/p>\n","protected":false},"author":1,"featured_media":321,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,89,56,54],"tags":[71,65,251,67],"class_list":["post-343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel","category-java","category-javascript","category-programala-dilleri-ve-programlamaya-giris","tag-hello-world","tag-java","tag-javascript","tag-programlama"],"_links":{"self":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":5,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"predecessor-version":[{"id":810,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/343\/revisions\/810"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/media\/321"}],"wp:attachment":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}