Чем отличаются частные и защищенные модификаторы видимости в Котлине? - PullRequest
0 голосов
/ 18 сентября 2018

Я только начал изучать kotlin и запутался с модификатором защищенного доступа, я сомневаюсь, в чем именно заключается разница между модификатором частного и защищенного доступа в kotlin.Я искал в Google, но не получил удовлетворительного ответа.

Ответы [ 6 ]

0 голосов
/ 18 сентября 2018

Что касается членов класса:

  • элементы, отмеченные protected, видимы внутри класса, а подклассы
  • элементы, отмеченные private, видны в классе

Что касается объявлений верхнего уровня:

  • (protected не применимо)
  • элементы, отмеченные private, видны в одном и том же файле
0 голосов
/ 18 сентября 2018

Классы и интерфейсы

Для членов, объявленных внутри класса:

private означает видимый только внутри этого класса (включая всех его членов);

protected - то же самое, что private + также видимый в подклассах;

internal - любой клиент внутри этого модуля, который видит декларирующий класс, видит еговнутренние члены;

public - любой клиент, который видит декларирующий класс, видит своих открытых членов.

KotlinLang

0 голосов
/ 18 сентября 2018

Проверьте это для подробного описания.

Если вы хотите понять защищенную концепцию, вам необходимо базовое понимание подклассов и наследования.

Переменные или функции со спецификатором защищенного доступа можно увидеть из дочерних классов.Но частная воля связывает сферу внутри класса.

рассмотрим этот базовый код:



    open class Outer {
        private val a = 1 // visible only for instance of class Outer
        protected open val b = 2 // visible for instance of Outer and another subclass which inherits Outer.
        val d = 4  // public by default
        protected class Nested {
            public val e: Int = 5
        }
    }

    public class Subclass : Outer() {
        // a is not visible
        // b, d are visible
        // Nested and e are visible

        override val b = 5   // 'b' is protected
    }


Примечание. Приведенный выше код взят из документов.

0 голосов
/ 18 сентября 2018

Как и в большинстве языков ООП, в Kotlin есть несколько модификаторов:

public - класс, функция или свойство могут быть доступны из любого места в проекте.В Kotlin по умолчанию класс, свойство или функция являются общедоступными

protected - класс, функция или свойство могут быть доступны только текущим подклассам класса

private - класс, функция илисвойство может быть доступно только в текущем классе

internal - класс, функция или свойство могут быть доступны из любого места в текущем модуле

0 голосов
/ 18 сентября 2018

В официальном documentatin говорится:

private означает видимый только внутри этого класса (включая всех его членов);

protected - то же самоекак private + также видно в подклассах;

0 голосов
/ 18 сентября 2018

С Kotlin doc :

private - означает видимый только внутри этого класса (включая всех его членов);

protected - то же самое, что private + visibleтакже в подклассах;

Видимо, это означает, что поле или метод могут быть доступны или использованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...