Visibility Modifiers Flashcards
Cuales son los 4 modificadores de acceso en kotlin?
public protected internal private
Que entidades podemos marcar con modificadores de acceso?
Clases, objetos, interfaces, contructores, funciones, propiedades y setters. Los getters no se puede ya que tienen el mismo que la propiedad a la que estan asociados.
Diferencia entre paquete, modulo y file?
Un paquete esta compuesto por muchos files. Los files al inicio tienen el nombre del paquete al que pertenecen:
package org.example
Dentro de un file tenemos clases, objetos, funciones etc.
Un modulo es un conjunto de paquetes que a su vez tiene muchos files.
Explica la visibilidad de cada entidad dentro de este paquete
//file name: example.kt package foo
private fun bar(){} class Bar{} interface Bar{}
internal val baz = 6
public var bar: Int = 5
private set
El default es public que es visible en cualquier sitio
private, solo visible dentro del file, en este caso example.kt
internal, visible en todos los paquetes y files de este modulo
una property puede ser publica y su setter puede ser private que quiere decir que solo puede ser modificado dentro de este file
Explica la visibilidad de cada entidad dentro de estas clases
open class Outer{ private val a = 1 protected open val b = 2 internal val c = 3 val d = 4
protected class Nested{ public val e: Int = 5 } }
class Subclass:Outer(){ //visibilidad de las variables de Outer aqui?
override val b = 5 }
class Unrelated(o: Outer){ //visibilidad de las variables outer aqui?
En la subclase: todas menos la a, porque la private solo permite visibilidad dentro de la clase. Protected igual que private pero si permite visibilidad a subclases. Y por ultimo internal, permite visibilidad dentro del mismo modulo.
En Unrelated: solo la internal, mismo modulo y la d que es public. Private y protected no son visible porque es una clase distinta y no hereda
Que es una variable local?
Son aquellas que solo operan dentro del marco de una funcion