Содержание

Модификатор доступа Private

Модификатор доступа Private

В некоторых языках есть так называемые модификаторы доступа. Они меняют возможности доступа к элементам структуры/класса, функциям. И в разных языках эти модификаторы доступы разные. Иногда они прям ставят в тупик при переключении между языками программирования. Например, в Си подобных языках модификатором доступа будет слово private:

C++

1
2
3
4
class Example {
    private int a
    private void foo(){}
}

java

1
2
3
4
5
6
public class Bicycle {
    private int speed;
    private void speedUp(int increment) {
        speed += increment;
    }
}

В других языках модификатором доступа может быть заглавном имени поля (если название метода/поля написано с заглавной буквы – оно публично), например в Go.

Go

1
2
3
4
5

type FooBar struct {
    privateVar int
    PublicVar int
}

Есть языки которых приватность организуется наличием _ перед названием переменной, например Dart.

Dart

1
2
3
class NewBox extends StatelessWidget {
    String _name;
}

Python

А есть языки со своим особым подходом, например Python. Там свой особый подход:

  • если довать к началу имени переменнеой __ – это означает, что переменная вроде как приватная, но доступ к ней все-так иимеется;
  • если довать к началу имени переменнеой _ – это означает, что переменная вроде как приватная, но доступ к ней все-так иимеется, но и трогать её рекомендуется только технически грамотным специалистам.

То есть вся приватность держится исключительно на договоренности между разработчиками.

1
2
3
4
5
class A:
    def _secret(self):
        print("Это метод для технических подкованных!")
    def _private(self):
        print("Это приватный метод!")