Size: a a a

StartAndroid Ru Kotlin

2019 March 20

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
Shuhrat
в котлине нет нужды в инкапсуляции он по умолчанию уже сделань?
Если не ошибаюсь, то зависит от модификатора var или val, который вы поставите в конструкторе  data class.
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
источник

S

Shuhrat in StartAndroid Ru Kotlin
вроде val и var не влияют на модификатор private никоем образом)) скорее всего все реализация защиты встроена на уровне класса когда мы пишем data class
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
Shuhrat
вроде val и var не влияют на модификатор private никоем образом)) скорее всего все реализация защиты встроена на уровне класса когда мы пишем data class
Если вы в data class в конструкторе задаете val у переменной, то вы сможете задать значение переменной только в конструкторе и так же получаете getter. А если вы задаете в конструкторе var у переменной, то вы сможете задать значение переменной в конструкторе и так же получаете getter и setter.
источник

S

Shuhrat in StartAndroid Ru Kotlin
Иван Макеев
Если вы в data class в конструкторе задаете val у переменной, то вы сможете задать значение переменной только в конструкторе и так же получаете getter. А если вы задаете в конструкторе var у переменной, то вы сможете задать значение переменной в конструкторе и так же получаете getter и setter.
спасибо за пояснения, а сама перемения приватная правильно и никто к ней доступа не имеет кроме прямых доступов из самого кода?
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
вы можете задать модификатор private но это повлияет именно на инкапсуляцию, при обращении к экзеплярую класса вы не увидите данную переменную, соответственно не сможете ей ничего присвоить.
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
а если например поставил поставите в конструкторе просто val, то вы увидите переменную но присвоить ей ничего не сможете.
источник

S

Shuhrat in StartAndroid Ru Kotlin
Иван Макеев
вы можете задать модификатор private но это повлияет именно на инкапсуляцию, при обращении к экзеплярую класса вы не увидите данную переменную, соответственно не сможете ей ничего присвоить.
Это же нарушает защиту переменых, если они будут публичными, то любому знающему не составить проблемы заменит ее значения на лету. Или я не прав?
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
Shuhrat
Это же нарушает защиту переменых, если они будут публичными, то любому знающему не составить проблемы заменит ее значения на лету. Или я не прав?
Kotlin не позволит, напишет (Val cannot be reassigned)
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
вы же на java делаете переменную private и задаете ей getter и setter, что бы не было доступа напрямую к переменной, а только через методы. верно?
источник

S

Shuhrat in StartAndroid Ru Kotlin
Иван Макеев
вы же на java делаете переменную private и задаете ей getter и setter, что бы не было доступа напрямую к переменной, а только через методы. верно?
да, но переменная остаеться при этом приватным, и только сеттер может туда установливать значения
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
в Kotlin немного по другому val и var в конструкторе задают какой будет доступ к переменным. "Классы в Kotlin могут иметь свойства: изменяемые (mutable) и неизменяемые (read-only) — var и val соответственно"
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
но вы так же можете переопределить поведение getter и setter
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
в ссылке, которую я дал выше об этом написано
источник

S

Shuhrat in StartAndroid Ru Kotlin
Иван Макеев
в Kotlin немного по другому val и var в конструкторе задают какой будет доступ к переменным. "Классы в Kotlin могут иметь свойства: изменяемые (mutable) и неизменяемые (read-only) — var и val соответственно"
Это я понимаю, что есть изменямые и не изменяемые. Меня именно напрягает вот в jave например private String name потом публичные методы гет и сет. Но сама переменая приват и прямого доступа нет к ней ни у кого кроме гетера и сетера... никто не может напрямую обратится к переменой, а тут я из любого места обратиться к переменой.
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
это Kotlin)
источник

S

Shuhrat in StartAndroid Ru Kotlin
Иван Макеев
это Kotlin)
наверное в котлине под капотом зашита прямого доступа к переменой))) они же не дураки если бы это было опасно они бы не сделали таким его))) Ну главное я понял что оно так и есть, а не я что то путаю))) Спасибо))
источник

AK

Aliaksei Karaliou in StartAndroid Ru Kotlin
Shuhrat
наверное в котлине под капотом зашита прямого доступа к переменой))) они же не дураки если бы это было опасно они бы не сделали таким его))) Ну главное я понял что оно так и есть, а не я что то путаю))) Спасибо))
Если из Джавы вызывать код Котлина, то val переделается в геттер, а var в геттер и сеттер
источник

ИМ

Иван Макеев... in StartAndroid Ru Kotlin
посмотрите декомпиляцию kotlin в java
источник

S

Shuhrat in StartAndroid Ru Kotlin
Aliaksei Karaliou
Если из Джавы вызывать код Котлина, то val переделается в геттер, а var в геттер и сеттер
вооо это и хотел узнат)) тоест нет прямого доступа)) спасибо))
источник