fun - struct kotlin
¿Cuál es la diferencia entre ''abierto'' y ''público'' en Kotlin? (3)
La palabra clave open
significa "abrir para extensión":
La anotación
open
en una clase es lo opuesto a lafinal
de Java: permite a otros heredar de esta clase. De forma predeterminada , todas las clases en Kotlin sonfinal
, lo que corresponde a Effective Java, Ítem 17: Diseño y documento para herencia o bien lo prohíbe .
También debe ser explícito sobre los métodos que desea anular, también marcados con open
:
open class Base {
open fun v() {}
fun nv() {}
}
La palabra clave public
actúa como un modificador de visibilidad que puede aplicarse a clases, funciones, etc. Tenga en cuenta que public
es el valor predeterminado si no se especifica nada más explícitamente:
Si no especifica ningún modificador de visibilidad, se usa
public
forma predeterminada, lo que significa que sus declaraciones serán visibles en todas partes
Soy nuevo en Kotlin y estoy confundido entre palabras clave open
y public
. ¿Podría alguien decirme la diferencia entre esas palabras clave?
abierto es opuesto a final en java. Si la clase no está ''abierta'', no se puede heredar.
class First{}
class Second:First(){} // Not allowed. Since ''First'' is private by default.
No te confundas con lo abierto y lo público. El público es un modificador de visibilidad.
class Third{} // By default this is public
private class Fourth{}
class Fifth{
val third = Third() // No issues
val fourth = Fourth() // Can''t access because Fourth is private
}
class A { ... }
en Java es igual a open class A { ... }
en Kotlin.
final class B { ... }
en Java es igual a la class B { ...}
en Kotlin.
No está relacionado con el public
.
En Kotlin, todo sin modificadores de acceso es public
por defecto. Puede decir explícitamente public
en la definición, pero no es necesario en Kotlin.
Asi que,
public class A { ... }
y
class A { ... }
Son lo mismo en Kotlin.