Sobes.tech
Junior

Μίλησε για τους τροποποιητές πρόσβασης σε Java και Kotlin.

sobes.tech AI

Απάντηση από AI

Στη Java:

  • public: προσβάσιμο από οπουδήποτε.
  • protected: προσβάσιμο μέσα στην κλάση, το πακέτο και τις υποκλάσεις.
  • (χωρίς τροποποιητή): προσβάσιμο μέσα στο πακέτο (package-private).
  • private: προσβάσιμο μόνο μέσα στην κλάση.

Στην Kotlin:

  • public: προσβάσιμο από οπουδήποτε (προεπιλογή).
  • internal: προσβάσιμο εντός του module.
  • protected: προσβάσιμο μέσα στην κλάση και τις υποκλάσεις της (διαφέρει από την Java ως προς την πρόσβαση στο πακέτο).
  • private: προσβάσιμο μόνο μέσα στην κλάση/αρχείο.

Διαφορές:

  • Στην Kotlin δεν υπάρχει ο τροποποιητής "package-private", ο αντίστοιχός του είναι το internal με διαφορετικό scope (το module).
  • Στην Kotlin, το protected δεν παρέχει πρόσβαση εντός του πακέτου όπως στην Java.
  • Στην Kotlin, το private μπορεί επίσης να χρησιμοποιηθεί για δηλώσεις επιπέδου κορυφής (functions, properties) σε ένα αρχείο, καθιστώντας τα προσβάσιμα μόνο μέσα σε αυτό το αρχείο.
// Παράδειγμα σε Kotlin
package com.example.myapp

private const val API_KEY = "secret" // Ορατό μόνο σε αυτό το αρχείο

class MyClass {
    private val internalState = 1 // Ορατό μόνο μέσα στην MyClass
    protected fun protectedMethod() {} // Ορατό στην MyClass και τις υποκλάσεις της
    internal fun internalMethod() {} // Ορατό εντός του module
}