﻿
{"id":273,"date":"2012-03-21T00:33:27","date_gmt":"2012-03-21T00:33:27","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=273"},"modified":"2012-05-28T12:59:40","modified_gmt":"2012-05-28T12:59:40","slug":"cta-polymorphismcok-bicimlilik","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-polymorphismcok-bicimlilik\/","title":{"rendered":"C# Polymorphism(\u00c7ok Bi\u00e7imlilik)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda C#&#8217;ta Polymorphism yani \u00e7ok bi\u00e7imlilik konusuna de\u011finece\u011fim.Anla\u015f\u0131lmas\u0131 biraz zor bir durum olsada,en uygun bi\u00e7imde izah etmeye \u00e7al\u0131\u015faca\u011f\u0131m.OOP&#8217;de \u00e7ok bi\u00e7imlilik iki \u015fekilde elde edilebilir.Kal\u0131t\u0131m yoluyla ve interface kal\u0131t\u0131m\u0131 yoluyla.\u0130kisinde de ama\u00e7,bir nesnenin birden fazla t\u00fcr\u00fcn davran\u0131\u015flar\u0131n\u0131 g\u00f6sterebilmesini sa\u011flamakt\u0131r.<br \/>\nBase Class&#8217;tan bir referansa,Base Class&#8217;tan t\u00fcremi\u015f bir s\u0131n\u0131f\u0131n nesnesini i\u015faret ettirmektir.Yani t\u00fcremi\u015f olan bir s\u0131n\u0131f\u0131n referans\u0131n\u0131,o s\u0131n\u0131f\u0131n t\u00fcremi\u015f oldu\u011fu s\u0131n\u0131f\u0131n referans\u0131na ge\u00e7irebiliyoruz.Ancak bunun tersi durum m\u00fcmk\u00fcn de\u011fildir.Yani Base Class\u0131n referans\u0131n\u0131, ondan t\u00fcreyen s\u0131n\u0131f\u0131n referans\u0131na ge\u00e7iremeyiz.Buna \u00e7ok g\u00fczel bir \u00f6rnek verebiliriz.<br \/>\nHayvan s\u0131n\u0131f\u0131ndan Ku\u015f s\u0131n\u0131f\u0131n\u0131 t\u00fcretebiliriz.Ku\u015f s\u0131n\u0131f\u0131n\u0131n referans\u0131n\u0131,Hayvan s\u0131n\u0131f\u0131n\u0131n referans\u0131na ge\u00e7irebiliriz.\u00c7\u00fcnk\u00fc her ku\u015f bir hayvand\u0131r.Ancak tam tersi m\u00fcmk\u00fcn de\u011fildir.Yani her hayvan bir ku\u015f de\u011fildir.<br \/>\n<!--more-->\u015eimdi Base Class olacak s\u0131n\u0131f\u0131m\u0131z\u0131 tan\u0131ml\u0131yorum.&#8221;A.cs&#8221;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---A.cs---\r\n    class A\r\n    {\r\n        public string B { get; set; }\r\n        public string C { get; set; }\r\n    }\r\n<\/pre>\n<p>Bu s\u0131n\u0131ftan t\u00fcreyecek bir s\u0131n\u0131f\u0131da haz\u0131rl\u0131yorum.&#8221;B.cs&#8221;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---B.cs---\r\n    class B:A\r\n    {\r\n        public string D { get; set; }\r\n        public string E { get; set; }\r\n        public string F { get; set; }\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi B s\u0131n\u0131f\u0131 A s\u0131n\u0131f\u0131ndan t\u00fcr\u00fcyor.<br \/>\n\u015eimdi B referans\u0131n\u0131 A referans\u0131na ge\u00e7irelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\/\/1.\u015eekil\r\n            A a = new A();\r\n            B b = new B();\r\n            a = b;\r\n\/\/2.\u015eekil\r\n            B b = new B();\r\n            A a = b;\r\n\/\/3.\u015eekil\r\n            A a = new B();\r\n<\/pre>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi t\u00fcremi\u015f s\u0131n\u0131f\u0131n referans\u0131,t\u00fcredi\u011fi s\u0131n\u0131f\u0131n referans\u0131n\u0131 i\u015faret edebiliyor.<br \/>\nKal\u0131t\u0131m veren s\u0131n\u0131f,kendisinden kal\u0131t\u0131m alan s\u0131n\u0131f\u0131n memberlar\u0131ndan haberdar de\u011fildir.Dolay\u0131s\u0131yla A t\u00fcr\u00fcnden a referans\u0131 ile B s\u0131n\u0131f\u0131na ait bir elemana ula\u015famay\u0131z.Bu \u00f6nemli bir noktad\u0131r.Yani, B s\u0131n\u0131f\u0131nda D isimli string bir propertymiz var.a.D diyip bu propertye eri\u015femeyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            A a = new B();\r\n            a.D = &quot;deneme&quot;;\r\n\/*A s\u0131n\u0131f\u0131n\u0131n referans\u0131,kendisinden t\u00fcreyen B s\u0131n\u0131f\u0131n\u0131n referans\u0131n\u0131 i\u015faret edebiliyor.\r\nAncak A s\u0131n\u0131f\u0131 B s\u0131n\u0131f\u0131ndaki memberlardan haberdar olmad\u0131\u011f\u0131 i\u00e7in,B s\u0131n\u0131f\u0131ndaki D isimli\r\npropertye ula\u015fam\u0131yor.Bu nedenden dolay\u0131 yukar\u0131daki kod,a referans\u0131nda D eleman\u0131 bulamad\u0131\u011f\u0131ndan\r\nhata verecektir.Bu sorunu a\u015fa\u011f\u0131daki \u015fekilde \u00e7\u00f6zebiliriz.*\/\r\n            A a = new B();\r\n            ((B)a).D=&quot;Asd&quot;;\r\n\/*Bu \u015fekilde a referans\u0131n\u0131 B s\u0131n\u0131f\u0131na casting yapars\u0131n\u0131z hatayla kar\u015f\u0131la\u015fmazs\u0131n\u0131z.\r\n<\/pre>\n<p>Yukar\u0131daki ((B)a).D Casting i\u015flemidir.Boxing &#8211; Unboxing sadece object t\u00fcrlerde meydana gelir.\u00c7ok bi\u00e7imlilik ili\u015fkisi olan nesnelerde ki bu i\u015fleme casting denir.<br \/>\nUmar\u0131m faydal\u0131 olabilmi\u015fimdir.<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda C#&#8217;ta Polymorphism yani \u00e7ok bi\u00e7imlilik konusuna de\u011finece\u011fim.Anla\u015f\u0131lmas\u0131 biraz zor bir durum olsada,en uygun bi\u00e7imde izah etmeye \u00e7al\u0131\u015faca\u011f\u0131m.OOP&#8217;de \u00e7ok bi\u00e7imlilik iki \u015fekilde elde edilebilir.Kal\u0131t\u0131m yoluyla ve interface kal\u0131t\u0131m\u0131 yoluyla.\u0130kisinde de ama\u00e7,bir nesnenin birden&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[164,165],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","tag-cok-bicimlilik","tag-polymorphism"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=273"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/273\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}