{"id":42658,"date":"2026-06-18T17:00:41","date_gmt":"2026-06-18T14:00:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=42658"},"modified":"2026-06-18T17:01:03","modified_gmt":"2026-06-18T14:01:03","slug":"kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/","title":{"rendered":"Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private"},"content":{"rendered":"<h2>Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private<\/h2>\n<p>Kotlin, modern ve g\u00fc\u00e7l\u00fc bir programlama dili olarak, yaz\u0131l\u0131m geli\u015ftiricilere kodlar\u0131n\u0131 daha organize, g\u00fcvenli ve y\u00f6netilebilir hale getirmeleri i\u00e7in \u00e7e\u015fitli ara\u00e7lar sunar. Bu ara\u00e7lardan biri de &#8220;g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6rleri&#8221;dir. G\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6rleri, bir s\u0131n\u0131f\u0131n, fonksiyonun, \u00f6zelli\u011fin veya paketin kod taban\u0131n\u0131n di\u011fer b\u00f6l\u00fcmlerinden ne kadar eri\u015filebilir oldu\u011funu kontrol etmemizi sa\u011flar. Bu, gereksiz karma\u015f\u0131kl\u0131\u011f\u0131 azaltmaya, veri kaps\u00fcllemeyi g\u00fc\u00e7lendirmeye ve API&#8217;leri daha anla\u015f\u0131l\u0131r hale getirmeye yard\u0131mc\u0131 olur. Kotlin&#8217;de d\u00f6rt ana g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6r\u00fc bulunur: <code>public<\/code>, <code>protected<\/code>, <code>internal<\/code> ve <code>private<\/code>. Bu makalede, bu modifikat\u00f6rlerin her birini detayl\u0131 bir \u015fekilde inceleyecek, kullan\u0131m alanlar\u0131n\u0131 \u00f6rneklerle a\u00e7\u0131klayacak ve aralar\u0131ndaki farklar\u0131 vurgulayaca\u011f\u0131z.<\/p>\n<h3>G\u00f6r\u00fcn\u00fcrl\u00fck Modifikat\u00f6rlerinin \u00d6nemi<\/h3>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirmenin temel prensiplerinden biri &#8220;kaps\u00fclleme&#8221;dir. Kaps\u00fclleme, bir nesnenin i\u00e7 durumunu d\u0131\u015f d\u00fcnyadan gizleyerek, yaln\u0131zca kontroll\u00fc bir aray\u00fcz \u00fczerinden eri\u015fim sa\u011flamas\u0131d\u0131r. Bu, nesnenin i\u00e7 i\u015fleyi\u015finin de\u011fi\u015fmesinin d\u0131\u015f kodu etkilemesini engeller ve kodun daha mod\u00fcler, yeniden kullan\u0131labilir ve bak\u0131m\u0131 kolay olmas\u0131n\u0131 sa\u011flar. G\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6rleri, kaps\u00fcllemeyi uygulamak i\u00e7in kullan\u0131lan birincil mekanizmad\u0131r.<\/p>\n<p>Bir kod par\u00e7as\u0131n\u0131n (\u00f6rne\u011fin bir s\u0131n\u0131f\u0131n) i\u00e7 detaylar\u0131n\u0131n di\u011fer mod\u00fcller veya s\u0131n\u0131flar taraf\u0131ndan bilinmesine gerek yoktur. Bu i\u00e7 detaylar\u0131 gizleyerek, yaln\u0131zca gerekli olanlar\u0131 d\u0131\u015far\u0131ya a\u00e7ar\u0131z. Bu, a\u015fa\u011f\u0131daki avantajlar\u0131 sa\u011flar:<\/p>\n<p>*   <strong>G\u00fcvenlik:<\/strong> Hassas verilerin veya kritik i\u015flevlerin yanl\u0131\u015fl\u0131kla veya k\u00f6t\u00fc niyetle de\u011fi\u015ftirilmesini \u00f6nler.<br \/>\n*   <strong>Mod\u00fclerlik:<\/strong> Kodun farkl\u0131 b\u00f6l\u00fcmlerinin birbirinden ba\u011f\u0131ms\u0131z olarak geli\u015ftirilmesine ve de\u011fi\u015ftirilmesine olanak tan\u0131r. Bir mod\u00fcl\u00fcn i\u00e7 yap\u0131s\u0131n\u0131 de\u011fi\u015ftirmek, di\u011fer mod\u00fclleri etkilemez, yeter ki d\u0131\u015far\u0131ya a\u00e7\u0131k olan aray\u00fcz ayn\u0131 kals\u0131n.<br \/>\n*   <strong>Anla\u015f\u0131l\u0131rl\u0131k:<\/strong> Bir API&#8217;nin veya bir s\u0131n\u0131f\u0131n hangi k\u0131s\u0131mlar\u0131n\u0131n kullan\u0131labilir oldu\u011funu net bir \u015fekilde belirler. Bu, geli\u015ftiricilerin kodu daha h\u0131zl\u0131 anlamas\u0131na ve kullanmas\u0131na yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Bak\u0131m Kolayl\u0131\u011f\u0131:<\/strong> Kodu de\u011fi\u015ftirirken veya hata ay\u0131klarken, hangi k\u0131s\u0131mlar\u0131n etkilenebilece\u011fini bilmek daha kolayd\u0131r.<\/p>\n<p>Kotlin&#8217;deki g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6rleri, bu prensipleri uygulamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir yol sunar.<\/p>\n<h3>1. <code>public<\/code> Modifikat\u00f6r\u00fc<\/h3>\n<p><code>public<\/code> modifikat\u00f6r\u00fc, bir \u00fcyenin (s\u0131n\u0131f, fonksiyon, \u00f6zellik vb.) her yerden eri\u015filebilir oldu\u011funu belirtir. E\u011fer bir \u00fcye i\u00e7in herhangi bir g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6r\u00fc belirtilmezse, varsay\u0131lan olarak <code>public<\/code> kabul edilir. Bu, Kotlin&#8217;de en geni\u015f eri\u015fim seviyesidir.<\/p>\n<p><strong>Kullan\u0131m Alanlar\u0131:<\/strong><\/p>\n<p>*   API&#8217;ler: Bir k\u00fct\u00fcphanenin veya mod\u00fcl\u00fcn d\u0131\u015f d\u00fcnyaya sundu\u011fu fonksiyonlar ve s\u0131n\u0131flar genellikle <code>public<\/code> olmal\u0131d\u0131r.<br \/>\n*   Genel Kullan\u0131m \u0130\u00e7in Tasarlanm\u0131\u015f S\u0131n\u0131flar ve Fonksiyonlar: Uygulaman\u0131n herhangi bir yerinden eri\u015filmesi gereken yard\u0131mc\u0131 fonksiyonlar veya veri yap\u0131lar\u0131.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-kotlin\">\/\/ Dosya: utils\/StringUtils.kt\npackage com.example.utils\n\nclass StringUtils {\n    \/\/ Varsay\u0131lan olarak public'tir. Her yerden eri\u015filebilir.\n    fun reverse(str: String): String {\n        return str.reversed()\n    }\n\n    \/\/ A\u00e7\u0131k\u00e7a public olarak belirtilmi\u015f.\n    public fun toUpperCase(str: String): String {\n        return str.toUpperCase()\n    }\n}\n\n\/\/ Dosya: main.kt\npackage com.example.app\n\nimport com.example.utils.StringUtils\n\nfun main() {\n    val utils = StringUtils()\n    val reversedString = utils.reverse(&quot;hello&quot;) \/\/ Eri\u015filebilir\n    val upperCaseString = utils.toUpperCase(&quot;world&quot;) \/\/ Eri\u015filebilir\n\n    println(reversedString)\n    println(upperCaseString)\n}<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>StringUtils<\/code> s\u0131n\u0131f\u0131 ve i\u00e7indeki <code>reverse<\/code> ile <code>toUpperCase<\/code> fonksiyonlar\u0131 <code>public<\/code>&#8216;tir (veya varsay\u0131lan olarak <code>public<\/code> kabul edilir). Bu nedenle, <code>main<\/code> fonksiyonundan <code>StringUtils<\/code> s\u0131n\u0131f\u0131n\u0131n bir \u00f6rne\u011fini olu\u015fturup bu fonksiyonlara sorunsuz bir \u015fekilde eri\u015febiliriz.<\/p>\n<h3>2. <code>private<\/code> Modifikat\u00f6r\u00fc<\/h3>\n<p><code>private<\/code> modifikat\u00f6r\u00fc, bir \u00fcyenin yaln\u0131zca tan\u0131mland\u0131\u011f\u0131 s\u0131n\u0131f, nesne veya dosya i\u00e7inden eri\u015filebilir oldu\u011funu belirtir. Bu, Kotlin&#8217;deki en k\u0131s\u0131tlay\u0131c\u0131 g\u00f6r\u00fcn\u00fcrl\u00fck seviyesidir. <code>private<\/code> \u00fcyeler, kaps\u00fcllemenin en g\u00fc\u00e7l\u00fc \u015feklini sa\u011flar.<\/p>\n<p><strong>Kullan\u0131m Alanlar\u0131:<\/strong><\/p>\n<p>*   \u0130\u00e7 Yard\u0131mc\u0131 Fonksiyonlar ve \u00d6zellikler: Bir s\u0131n\u0131f\u0131n veya nesnenin kendi i\u00e7 i\u015fleyi\u015fi i\u00e7in kulland\u0131\u011f\u0131, d\u0131\u015far\u0131dan eri\u015filmemesi gereken helper fonksiyonlar veya durum de\u011fi\u015fkenleri.<br \/>\n*   Gizli Veriler: Bir s\u0131n\u0131f\u0131n i\u00e7 durumunu korumak i\u00e7in kullan\u0131lan \u00f6zellikler.<br \/>\n*   Tek Ba\u015f\u0131na Kullan\u0131lan Nesneler: Yaln\u0131zca bir s\u0131n\u0131f\u0131n i\u00e7inden eri\u015filen singleton nesneler veya fabrika desenleri.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-kotlin\">\/\/ Dosya: person\/Person.kt\npackage com.example.person\n\nclass Person(private val name: String, private var age: Int) {\n\n    \/\/ private bir \u00f6zellik. Sadece Person s\u0131n\u0131f\u0131 i\u00e7inden eri\u015filebilir.\n    private var internalId: String = &quot;ID_${System.currentTimeMillis()}&quot;\n\n    \/\/ private bir fonksiyon. Sadece Person s\u0131n\u0131f\u0131 i\u00e7inden eri\u015filebilir.\n    private fun displayInternalInfo() {\n        println(&quot;Internal ID: $internalId&quot;)\n    }\n\n    fun introduce() {\n        println(&quot;Hello, my name is $name and I am $age years old.&quot;)\n        \/\/ private \u00fcyeleri kendi s\u0131n\u0131f\u0131m\u0131z i\u00e7inden \u00e7a\u011f\u0131rabiliriz.\n        displayInternalInfo()\n    }\n\n    fun celebrateBirthday() {\n        age++\n        println(&quot;Happy birthday! Now I am $age.&quot;)\n        \/\/ private \u00fcyeleri kendi s\u0131n\u0131f\u0131m\u0131z i\u00e7inden \u00e7a\u011f\u0131rabiliriz.\n        displayInternalInfo()\n    }\n}\n\n\/\/ Dosya: main.kt\npackage com.example.app\n\nimport com.example.person.Person\n\nfun main() {\n    val person = Person(&quot;Alice&quot;, 30)\n    person.introduce() \/\/ Eri\u015filebilir\n    person.celebrateBirthday() \/\/ Eri\u015filebilir\n\n    \/\/ Hata! Person s\u0131n\u0131f\u0131n\u0131n d\u0131\u015f\u0131ndan private \u00fcyeye eri\u015filemez.\n    \/\/ println(person.internalId) \/\/ Hata verir\n    \/\/ person.displayInternalInfo() \/\/ Hata verir\n    \/\/ println(person.name) \/\/ Hata verir (private constructor parametresi)\n    \/\/ println(person.age) \/\/ Hata verir (private constructor parametresi)\n}<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>Person<\/code> s\u0131n\u0131f\u0131n\u0131n <code>internalId<\/code> \u00f6zelli\u011fi ve <code>displayInternalInfo<\/code> fonksiyonu <code>private<\/code> olarak tan\u0131mlanm\u0131\u015ft\u0131r. Bu nedenle, <code>main<\/code> fonksiyonundan bu \u00fcyelere eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131zda derleme hatalar\u0131 al\u0131r\u0131z. <code>name<\/code> ve <code>age<\/code> \u00f6zellikleri de <code>private<\/code> constructor parametreleri oldu\u011fu i\u00e7in d\u0131\u015far\u0131dan do\u011frudan eri\u015filemezler.<\/p>\n<p><strong>Dosya Seviyesinde <code>private<\/code>:<\/strong><\/p>\n<p>Kotlin&#8217;de, bir dosyan\u0131n en \u00fcst seviyesinde tan\u0131mlanan <code>private<\/code> \u00fcyeler, yaln\u0131zca o dosya i\u00e7indeki di\u011fer \u00fcyeler taraf\u0131ndan eri\u015filebilir. Bu, bir paketin i\u00e7indeki belirli bir dosyan\u0131n kendi i\u00e7 i\u015fleyi\u015fi i\u00e7in kulland\u0131\u011f\u0131 yard\u0131mc\u0131 fonksiyonlar\u0131 veya s\u0131n\u0131flar\u0131 gizlemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-kotlin\">\/\/ Dosya: helpers\/PrivateHelper.kt\npackage com.example.helpers\n\n\/\/ Bu fonksiyon, yaln\u0131zca PrivateHelper.kt dosyas\u0131 i\u00e7indeki di\u011fer \u00fcyeler taraf\u0131ndan eri\u015filebilir.\nprivate fun fileLevelHelperFunction() {\n    println(&quot;This is a file-level private helper.&quot;)\n}\n\nclass SomeClass {\n    fun callHelper() {\n        fileLevelHelperFunction() \/\/ Kendi dosyas\u0131ndan \u00e7a\u011f\u0131r\u0131labilir.\n    }\n}\n\n\/\/ Dosya: another_file_in_same_package.kt (ayn\u0131 pakette)\npackage com.example.helpers\n\nfun callFromAnotherFile() {\n    \/\/ Hata! Bu dosya, PrivateHelper.kt'den farkl\u0131 bir dosya oldu\u011fu i\u00e7in\n    \/\/ fileLevelHelperFunction()'a eri\u015femez.\n    \/\/ fileLevelHelperFunction() \/\/ Hata verir.\n}<\/code><\/pre>\n<p>Bu \u00f6zellik, ayn\u0131 paket i\u00e7indeki farkl\u0131 dosyalar aras\u0131nda <code>private<\/code> bir ayr\u0131m yapmaya olanak tan\u0131r.<\/p>\n<h3>3. <code>protected<\/code> Modifikat\u00f6r\u00fc<\/h3>\n<p><code>protected<\/code> modifikat\u00f6r\u00fc, bir \u00fcyenin yaln\u0131zca tan\u0131mland\u0131\u011f\u0131 s\u0131n\u0131f\u0131n kendisi ve o s\u0131n\u0131ftan t\u00fcretilen alt s\u0131n\u0131flar taraf\u0131ndan eri\u015filebilir oldu\u011funu belirtir. Bu, <code>private<\/code>&#8216;dan daha geni\u015f, ancak <code>public<\/code>&#8216;ten daha k\u0131s\u0131tlay\u0131c\u0131 bir eri\u015fim seviyesidir.<\/p>\n<p><strong>Kullan\u0131m Alanlar\u0131:<\/strong><\/p>\n<p>*   Kal\u0131t\u0131m Hiyerar\u015filerinde Ortak \u0130\u015flevsellik: Bir \u00fcst s\u0131n\u0131f\u0131n, alt s\u0131n\u0131flar\u0131n\u0131n kullanmas\u0131 i\u00e7in sa\u011flad\u0131\u011f\u0131 ancak d\u0131\u015far\u0131dan do\u011frudan eri\u015filmesini istemedi\u011fi ortak i\u015flevler veya veriler.<br \/>\n*   Soyut S\u0131n\u0131flar ve Aray\u00fczler: Soyut s\u0131n\u0131flarda, t\u00fcretilmi\u015f s\u0131n\u0131flar\u0131n uygulayaca\u011f\u0131 veya kullanaca\u011f\u0131 korumal\u0131 \u00fcyeler tan\u0131mlamak.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-kotlin\">\/\/ Dosya: shapes\/Shape.kt\npackage com.example.shapes\n\nopen class Shape {\n    protected val color: String = &quot;red&quot; \/\/ Alt s\u0131n\u0131flar taraf\u0131ndan eri\u015filebilir.\n\n    protected fun calculateArea(): Double {\n        \/\/ Bu fonksiyonun hesaplama mant\u0131\u011f\u0131, alt s\u0131n\u0131flar i\u00e7in bir ipucu olabilir\n        \/\/ veya alt s\u0131n\u0131flar\u0131n \u00fczerine yazabilece\u011fi bir temel sa\u011flayabilir.\n        println(&quot;Calculating area...&quot;)\n        return 0.0 \/\/ Ger\u00e7ek hesaplama alt s\u0131n\u0131flarda yap\u0131l\u0131r.\n    }\n\n    \/\/ public bir fonksiyon, protected \u00fcyeleri kullanabilir.\n    fun displayColor() {\n        println(&quot;Shape color is: $color&quot;)\n    }\n}\n\n\/\/ Dosya: shapes\/Circle.kt\npackage com.example.shapes\n\nclass Circle(val radius: Double) : Shape() {\n\n    override fun calculateArea(): Double { \/\/ protected fonksiyonu override edebiliriz.\n        val area = Math.PI <em> radius <\/em> radius\n        println(&quot;Circle area: $area&quot;)\n        return area\n    }\n\n    fun getCircleInfo() {\n        \/\/ Alt s\u0131n\u0131f olarak \u00fcst s\u0131n\u0131f\u0131n protected \u00fcyelerine eri\u015febiliriz.\n        println(&quot;This circle has color: $color&quot;) \/\/ protected 'color' eri\u015filebilir.\n        \/\/ calculateArea() \/\/ protected fonksiyonu \u00e7a\u011f\u0131rabiliriz.\n    }\n}\n\n\/\/ Dosya: main.kt\npackage com.example.app\n\nimport com.example.shapes.Shape\nimport com.example.shapes.Circle\n\nfun main() {\n    val circle = Circle(5.0)\n    circle.displayColor() \/\/ public fonksiyon \u00e7a\u011fr\u0131labilir.\n    circle.getCircleInfo() \/\/ public fonksiyon \u00e7a\u011fr\u0131labilir.\n\n    \/\/ Hata! Shape s\u0131n\u0131f\u0131n\u0131n d\u0131\u015f\u0131ndan protected \u00fcyeye eri\u015filemez.\n    \/\/ val shape = Shape()\n    \/\/ println(shape.color) \/\/ Hata verir\n    \/\/ shape.calculateArea() \/\/ Hata verir\n\n    \/\/ Hata! Circle s\u0131n\u0131f\u0131n\u0131n d\u0131\u015f\u0131ndan protected \u00fcyeye eri\u015filemez.\n    \/\/ println(circle.color) \/\/ Hata verir\n    \/\/ circle.calculateArea() \/\/ Hata verir (override edilmi\u015f olsa bile)\n}<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>Shape<\/code> s\u0131n\u0131f\u0131ndaki <code>color<\/code> \u00f6zelli\u011fi ve <code>calculateArea<\/code> fonksiyonu <code>protected<\/code> olarak tan\u0131mlanm\u0131\u015ft\u0131r. <code>Circle<\/code> s\u0131n\u0131f\u0131 <code>Shape<\/code>&#8216;ten t\u00fcredi\u011fi i\u00e7in <code>color<\/code> \u00f6zelli\u011fine eri\u015febilir ve <code>calculateArea<\/code> fonksiyonunu override edebilir. Ancak, <code>main<\/code> fonksiyonundan <code>Shape<\/code> veya <code>Circle<\/code> s\u0131n\u0131flar\u0131n\u0131n <code>protected<\/code> \u00fcyelerine do\u011frudan eri\u015fim m\u00fcmk\u00fcn de\u011fildir.<\/p>\n<p><strong>\u00d6nemli Not:<\/strong> Kotlin&#8217;de <code>protected<\/code> modifikat\u00f6r\u00fc, <em>sadece<\/em> tan\u0131mland\u0131\u011f\u0131 s\u0131n\u0131f ve ondan t\u00fcreyen alt s\u0131n\u0131flarla s\u0131n\u0131rl\u0131d\u0131r. Java&#8217;daki <code>protected<\/code>&#8216;\u0131n paket eri\u015fimi gibi ek bir anlam\u0131 Kotlin&#8217;de bulunmamaktad\u0131r. E\u011fer bir \u00fcyenin ayn\u0131 paket i\u00e7indeki di\u011fer s\u0131n\u0131flardan da eri\u015filebilir olmas\u0131n\u0131 istiyorsan\u0131z, <code>internal<\/code> modifikat\u00f6r\u00fcn\u00fc kullanmal\u0131s\u0131n\u0131z.<\/p>\n<h3>4. <code>internal<\/code> Modifikat\u00f6r\u00fc<\/h3>\n<p><code>internal<\/code> modifikat\u00f6r\u00fc, bir \u00fcyenin yaln\u0131zca tan\u0131mland\u0131\u011f\u0131 mod\u00fcl (module) i\u00e7inden eri\u015filebilir oldu\u011funu belirtir. Mod\u00fcl, bir dizi Kotlin dosyas\u0131 i\u00e7eren bir IntelliJ IDEA mod\u00fcl\u00fc, bir Maven veya Gradle projesi veya bir derleme birimidir. Bu, g\u00f6r\u00fcn\u00fcrl\u00fck kontrol\u00fcnde bir sonraki en geni\u015f seviyedir ve <code>public<\/code>&#8216;ten daha k\u0131s\u0131tlay\u0131c\u0131d\u0131r.<\/p>\n<p><strong>Kullan\u0131m Alanlar\u0131:<\/strong><\/p>\n<p>*   Mod\u00fcller Aras\u0131 Kaps\u00fclleme: Bir mod\u00fcl\u00fcn i\u00e7 i\u015fleyi\u015fini, di\u011fer mod\u00fcllerden gizlemek ancak ayn\u0131 mod\u00fcl i\u00e7indeki farkl\u0131 paketlerdeki veya dosyalardaki s\u0131n\u0131flar\u0131n bu \u00fcyelere eri\u015fmesini sa\u011flamak.<br \/>\n*   K\u00fct\u00fcphane Geli\u015ftirme: Bir k\u00fct\u00fcphanenin d\u0131\u015far\u0131ya sundu\u011fu API&#8217;ler <code>public<\/code> olmal\u0131, ancak k\u00fct\u00fcphanenin kendi i\u00e7 i\u015fleyi\u015finde kulland\u0131\u011f\u0131 yard\u0131mc\u0131 s\u0131n\u0131flar veya fonksiyonlar <code>internal<\/code> olarak tan\u0131mlanarak k\u00fct\u00fcphane kullan\u0131c\u0131lar\u0131n\u0131n bu i\u00e7 detaylara eri\u015fmesi engellenebilir.<br \/>\n*   Test Edilebilirlik: Ayn\u0131 mod\u00fcl i\u00e7indeki test s\u0131n\u0131flar\u0131n\u0131n, test edilen kodun <code>internal<\/code> \u00fcyelerine eri\u015fmesine izin vermek.<\/p>\n<p><strong>\u00d6rnek:<\/strong><\/p>\n<pre><code class=\"language-kotlin\">\/\/ Dosya: core\/DataProcessor.kt\npackage com.example.core\n\n\/\/ Bu s\u0131n\u0131f, ayn\u0131 mod\u00fcl i\u00e7indeki di\u011fer dosyalardan eri\u015filebilir.\ninternal class DataProcessor {\n    internal fun process(data: String): String {\n        println(&quot;Processing: $data&quot;)\n        return data.toUpperCase()\n    }\n}\n\n\/\/ Dosya: ui\/UserInterface.kt (ayn\u0131 mod\u00fclde, farkl\u0131 paket)\npackage com.example.ui\n\nimport com.example.core.DataProcessor \/\/ internal s\u0131n\u0131f\u0131 i\u00e7e aktarabiliriz.\n\nclass UserInterface {\n    fun displayData(input: String) {\n        val processor = DataProcessor() \/\/ internal s\u0131n\u0131f\u0131n \u00f6rne\u011fini olu\u015fturabiliriz.\n        val processed = processor.process(input) \/\/ internal fonksiyonu \u00e7a\u011f\u0131rabiliriz.\n        println(&quot;Displaying: $processed&quot;)\n    }\n}\n\n\/\/ Dosya: main.kt (ayn\u0131 mod\u00fclde, farkl\u0131 paket)\npackage com.example.app\n\nimport com.example.ui.UserInterface\n\nfun main() {\n    val ui = UserInterface()\n    ui.displayData(&quot;sample data&quot;)\n}\n\n\/\/ Dosya: another_module\/ExternalService.kt (farkl\u0131 bir mod\u00fcl)\n\/\/ package com.example.another_module \/\/ Bu farkl\u0131 bir mod\u00fcl olsayd\u0131...\n\n\/\/ import com.example.core.DataProcessor \/\/ HATA! Farkl\u0131 mod\u00fclden internal \u00fcyelere eri\u015filemez.\n\n\/\/ fun callExternalService() {\n\/\/     val processor = DataProcessor() \/\/ HATA!\n\/\/     processor.process(&quot;test&quot;) \/\/ HATA!\n\/\/ }<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>DataProcessor<\/code> s\u0131n\u0131f\u0131 ve <code>process<\/code> fonksiyonu <code>internal<\/code> olarak tan\u0131mlanm\u0131\u015ft\u0131r. Bu, <code>com.example.core<\/code> paketindeki <code>DataProcessor<\/code>&#8216;\u0131n, ayn\u0131 mod\u00fcl i\u00e7indeki <code>com.example.ui<\/code> paketindeki <code>UserInterface<\/code> s\u0131n\u0131f\u0131 taraf\u0131ndan eri\u015filebilir oldu\u011fu anlam\u0131na gelir. <code>UserInterface<\/code> s\u0131n\u0131f\u0131, <code>DataProcessor<\/code>&#8216;\u0131n bir \u00f6rne\u011fini olu\u015fturabilir ve <code>process<\/code> fonksiyonunu \u00e7a\u011f\u0131rabilir. Ancak, e\u011fer <code>ExternalService<\/code> farkl\u0131 bir mod\u00fclde olsayd\u0131, <code>DataProcessor<\/code>&#8216;a eri\u015fim m\u00fcmk\u00fcn olmazd\u0131.<\/p>\n<p><strong>Mod\u00fcl Kavram\u0131:<\/strong><\/p>\n<p>Kotlin&#8217;de mod\u00fcl, derleme birimidir. Bir IntelliJ IDEA projesinde, her bir mod\u00fcl genellikle bir <code>build.gradle<\/code> veya <code>pom.xml<\/code> dosyas\u0131 ile tan\u0131mlan\u0131r. Farkl\u0131 mod\u00fcller aras\u0131ndaki <code>internal<\/code> g\u00f6r\u00fcn\u00fcrl\u00fck, kodun daha iyi organize edilmesini ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n daha net y\u00f6netilmesini sa\u011flar.<\/p>\n<h3>G\u00f6r\u00fcn\u00fcrl\u00fck Modifikat\u00f6rlerinin Kar\u015f\u0131la\u015ft\u0131r\u0131lmas\u0131<\/h3>\n<p>A\u015fa\u011f\u0131daki tablo, Kotlin&#8217;deki d\u00f6rt ana g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6r\u00fcn\u00fcn eri\u015fim seviyelerini \u00f6zetlemektedir:<\/p>\n<p>| Modifikat\u00f6r   | Tan\u0131mland\u0131\u011f\u0131 Yerden Eri\u015filebilirlik                                  | Alt S\u0131n\u0131flardan Eri\u015filebilirlik | Ayn\u0131 Mod\u00fclden Eri\u015filebilirlik | Di\u011fer Mod\u00fcllerden Eri\u015filebilirlik |<br \/>\n| :&#8212;&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; | :&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; |<br \/>\n| <code>public<\/code>      | Evet                                                                  | Evet                            | Evet                         | Evet                              |<br \/>\n| <code>protected<\/code>   | Evet                                                                  | Evet                            | Hay\u0131r                        | Hay\u0131r                             |<br \/>\n| <code>internal<\/code>    | Evet                                                                  | Evet                            | Evet                         | Hay\u0131r                             |<br \/>\n| <code>private<\/code>     | Evet (Yaln\u0131zca tan\u0131mland\u0131\u011f\u0131 s\u0131n\u0131f\/nesne\/dosya i\u00e7inde)                 | Hay\u0131r                           | Hay\u0131r                        | Hay\u0131r                             |<\/p>\n<p><strong>Varsay\u0131lan Davran\u0131\u015f:<\/strong><\/p>\n<p>Unutulmamal\u0131d\u0131r ki, e\u011fer bir \u00fcye i\u00e7in herhangi bir g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6r\u00fc belirtilmezse, Kotlin&#8217;de varsay\u0131lan olarak <code>public<\/code> kabul edilir.<\/p>\n<h3>\u00d6zel Durumlar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>*   <strong><code>private<\/code> Constructor:<\/strong> Bir s\u0131n\u0131f\u0131n constructor&#8217;\u0131n\u0131 <code>private<\/code> yaparak, o s\u0131n\u0131ftan yaln\u0131zca kendi i\u00e7inde veya companion object arac\u0131l\u0131\u011f\u0131yla \u00f6rnek olu\u015fturulmas\u0131n\u0131 sa\u011flayabilirsiniz. Bu, singleton desenlerini uygulamak veya fabrika metodlar\u0131 kullanmak i\u00e7in yayg\u0131n bir tekniktir.<\/p>\n<pre><code class=\"language-kotlin\">class Singleton private constructor() {\n        companion object {\n            fun getInstance(): Singleton = Singleton()\n        }\n    }<\/code><\/pre>\n<p>*   <strong><code>private<\/code> Top-Level Fonksiyonlar ve \u00d6zellikler:<\/strong> Bir dosyan\u0131n en \u00fcst seviyesinde tan\u0131mlanan <code>private<\/code> fonksiyonlar ve \u00f6zellikler, yaln\u0131zca o dosya i\u00e7indeki di\u011fer kodlar taraf\u0131ndan eri\u015filebilir. Bu, ayn\u0131 dosya i\u00e7indeki s\u0131n\u0131flar veya fonksiyonlar i\u00e7in \u00f6zel yard\u0131mc\u0131lar olu\u015ftururken kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>*   <strong><code>internal<\/code> ve Paketler:<\/strong> Kotlin&#8217;de <code>internal<\/code> modifikat\u00f6r\u00fc, Java&#8217;daki <code>protected<\/code>&#8216;\u0131n paket eri\u015fimi benzeri bir davran\u0131\u015f\u0131 taklit eder, ancak daha geni\u015f bir kapsama sahiptir (t\u00fcm mod\u00fcl). E\u011fer sadece ayn\u0131 paket i\u00e7indeki eri\u015fimi kontrol etmek istiyorsan\u0131z, bu genellikle <code>internal<\/code> ile sa\u011flan\u0131r, \u00e7\u00fcnk\u00fc <code>protected<\/code> yaln\u0131zca kal\u0131t\u0131m hiyerar\u015fisi ile s\u0131n\u0131rl\u0131d\u0131r.<\/p>\n<p>*   <strong>API Tasar\u0131m\u0131:<\/strong> \u0130yi bir API tasar\u0131m\u0131, yaln\u0131zca gerekli olan \u00fcyeleri <code>public<\/code> olarak b\u0131rakmay\u0131 ve geri kalan her \u015feyi <code>private<\/code> veya <code>internal<\/code> olarak gizlemeyi i\u00e7erir. Bu, API&#8217;nin kullan\u0131m\u0131n\u0131 basitle\u015ftirir ve gelecekteki de\u011fi\u015fiklikler i\u00e7in daha fazla esneklik sa\u011flar.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Kotlin&#8217;deki <code>public<\/code>, <code>protected<\/code>, <code>internal<\/code> ve <code>private<\/code> g\u00f6r\u00fcn\u00fcrl\u00fck modifikat\u00f6rleri, yaz\u0131l\u0131m geli\u015ftiricilere kodlar\u0131n\u0131n eri\u015filebilirli\u011fini hassas bir \u015fekilde kontrol etme g\u00fcc\u00fc verir. Bu modifikat\u00f6rleri do\u011fru bir \u015fekilde kullanarak, daha g\u00fcvenli, daha mod\u00fcler, daha anla\u015f\u0131l\u0131r ve daha bak\u0131m\u0131 kolay kodlar yazabiliriz. Kaps\u00fcllemeyi g\u00fc\u00e7lendirmek, gereksiz ba\u011f\u0131ml\u0131l\u0131klar\u0131 azaltmak ve API&#8217;leri daha \u00f6ng\u00f6r\u00fclebilir hale getirmek i\u00e7in bu modifikat\u00f6rlerin her birinin amac\u0131n\u0131 ve kullan\u0131m alanlar\u0131n\u0131 anlamak kritik \u00f6neme sahiptir. <code>public<\/code> en geni\u015f eri\u015fimi sa\u011flarken, <code>private<\/code> en k\u0131s\u0131tlay\u0131c\u0131d\u0131r. <code>protected<\/code> kal\u0131t\u0131m hiyerar\u015filerini desteklerken, <code>internal<\/code> mod\u00fcl d\u00fczeyinde kaps\u00fclleme i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bu ara\u00e7lar\u0131 bilin\u00e7li bir \u015fekilde kullanmak, Kotlin projelerinizin kalitesini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/kotlin-visibility-modifiers-explained\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/kotlin-visibility-modifiers-explained<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private Kotlin, modern ve g\u00fc\u00e7l\u00fc bir programlama dili olarak, yaz\u0131l\u0131m geli\u015ftiricilere kodlar\u0131n\u0131 daha organize, g\u00fcvenli ve y\u00f6netilebilir hale getirmeleri i\u00e7in \u00e7e\u015fitli ara\u00e7lar sunar.","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-42658","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>Kotlin&#039;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin&#039;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private\" \/>\n<meta property=\"og:description\" content=\"Kotlin&#039;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private Kotlin, modern ve g\u00fc\u00e7l\u00fc bir programlama dili olarak, yaz\u0131l\u0131m geli\u015ftiricilere kodlar\u0131n\u0131 daha organize, g\u00fcvenli ve y\u00f6netilebilir hale getirmeleri i\u00e7in \u00e7e\u015fitli ara\u00e7lar sunar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-18T14:00:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-18T14:01:03+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=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private\",\"datePublished\":\"2026-06-18T14:00:41+00:00\",\"dateModified\":\"2026-06-18T14:01:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\"},\"wordCount\":1845,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\",\"name\":\"Kotlin'de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-06-18T14:00:41+00:00\",\"dateModified\":\"2026-06-18T14:01:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private\"}]},{\"@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":"Kotlin'de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/","og_locale":"tr_TR","og_type":"article","og_title":"Kotlin'de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private","og_description":"Kotlin'de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private Kotlin, modern ve g\u00fc\u00e7l\u00fc bir programlama dili olarak, yaz\u0131l\u0131m geli\u015ftiricilere kodlar\u0131n\u0131 daha organize, g\u00fcvenli ve y\u00f6netilebilir hale getirmeleri i\u00e7in \u00e7e\u015fitli ara\u00e7lar sunar.","og_url":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-06-18T14:00:41+00:00","article_modified_time":"2026-06-18T14:01:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private","datePublished":"2026-06-18T14:00:41+00:00","dateModified":"2026-06-18T14:01:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/"},"wordCount":1845,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/","url":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/","name":"Kotlin'de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-06-18T14:00:41+00:00","dateModified":"2026-06-18T14:01:03+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kotlinde-gorunurluk-visibility-modifikatorleri-public-protected-internal-private\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kotlin&#8217;de G\u00f6r\u00fcn\u00fcrl\u00fck (Visibility) Modifikat\u00f6rleri: public, protected, internal, private"}]},{"@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\/42658","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=42658"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42658\/revisions"}],"predecessor-version":[{"id":42660,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42658\/revisions\/42660"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42658"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42658"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}