En aquest tema, explorarem els modificadors de visibilitat en Kotlin. Els modificadors de visibilitat controlen l'accés a les classes, objectes, funcions i propietats des de diferents parts del codi. Kotlin proporciona quatre modificadors de visibilitat principals:
publicprivateprotectedinternal
public
publicEl modificador public és el modificador de visibilitat per defecte. Quan una classe, funció o propietat es declara com a public, és accessible des de qualsevol lloc del codi.
// Exemple de classe pública
public class Persona(val nom: String, val edat: Int) {
// Funció pública
public fun saludar() {
println("Hola, em dic $nom i tinc $edat anys.")
}
}
private
privateEl modificador private restringeix l'accés a la classe, funció o propietat només dins del mateix fitxer o classe on es declara.
class Persona(val nom: String, private val edat: Int) {
// Funció privada
private fun edatEnDies(): Int {
return edat * 365
}
fun mostrarEdatEnDies() {
println("Tinc ${edatEnDies()} dies.")
}
}En aquest exemple, la propietat edat i la funció edatEnDies només són accessibles dins de la classe Persona.
protected
protectedEl modificador protected permet l'accés a la classe, funció o propietat dins de la mateixa classe i les seves subclasses.
open class Animal {
protected fun respirar() {
println("L'animal està respirant.")
}
}
class Gos : Animal() {
fun bordar() {
respirar() // Accessible perquè Gos és una subclasse d'Animal
println("El gos està bordant.")
}
}
internal
internalEl modificador internal fa que la classe, funció o propietat sigui accessible dins del mateix mòdul. Un mòdul en Kotlin és un conjunt de fitxers Kotlin compilats junts, per exemple, un projecte IntelliJ IDEA o un conjunt de fitxers compilats amb la mateixa instrucció kotlinc.
Comparació de Modificadors de Visibilitat
| Modificador | Accessible des de... |
|---|---|
public |
Qualsevol lloc |
private |
Mateix fitxer o classe |
protected |
Mateixa classe i subclasses |
internal |
Mateix mòdul |
Exercicis Pràctics
Exercici 1
Crea una classe Cotxe amb les següents propietats i funcions:
- Una propietat
marcade tipusStringamb visibilitatpublic. - Una propietat
anyde tipusIntamb visibilitatprivate. - Una funció
detallsamb visibilitatpublicque imprimeixi la marca i l'any del cotxe. - Una funció
anysDesDeFabricacioamb visibilitatprivateque calculi els anys des de la fabricació del cotxe fins a l'any actual.
Solució
class Cotxe(val marca: String, private val any: Int) {
public fun detalls() {
println("Marca: $marca, Any: $any")
}
private fun anysDesDeFabricacio(): Int {
val anyActual = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR)
return anyActual - any
}
fun mostrarAnysDesDeFabricacio() {
println("Anys des de la fabricació: ${anysDesDeFabricacio()}")
}
}Exercici 2
Crea una classe Empleat amb les següents propietats i funcions:
- Una propietat
nomde tipusStringamb visibilitatinternal. - Una propietat
soude tipusDoubleamb visibilitatprotected. - Una funció
mostrarNomamb visibilitatpublicque imprimeixi el nom de l'empleat. - Una funció
calcularBonusamb visibilitatprotectedque calculi un bonus del 10% del sou.
Solució
open class Empleat(internal val nom: String, protected val sou: Double) {
public fun mostrarNom() {
println("Nom: $nom")
}
protected fun calcularBonus(): Double {
return sou * 0.10
}
}
class Manager(nom: String, sou: Double) : Empleat(nom, sou) {
fun mostrarBonus() {
println("Bonus: ${calcularBonus()}")
}
}Conclusió
Els modificadors de visibilitat en Kotlin són una eina poderosa per controlar l'accés a les diferents parts del codi. Utilitzar-los correctament pot ajudar a mantenir el codi més segur i organitzat. En aquest tema, hem après sobre els quatre modificadors de visibilitat principals (public, private, protected, internal) i hem vist exemples pràctics de com utilitzar-los. Ara estàs preparat per aplicar aquests conceptes en els teus projectes Kotlin!
Curs de Programació en Kotlin
Mòdul 1: Introducció a Kotlin
- Introducció a Kotlin
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Kotlin: Variables i Tipus de Dades
- Flux de Control: Condicionals i Bucles
- Funcions i Lambdas
Mòdul 2: Programació Orientada a Objectes en Kotlin
- Classes i Objectes
- Herència i Interfícies
- Modificadors de Visibilitat
- Classes de Dades i Classes Segellades
- Declaracions d'Objectes i Objectes Companys
Mòdul 3: Funcions Avançades de Kotlin
- Col·leccions i Genèrics
- Funcions d'Extensió
- Funcions d'Ordre Superior i Programació Funcional
- Coroutines i Programació Asíncrona
- DSL (Llenguatge Específic de Domini) en Kotlin
Mòdul 4: Kotlin per al Desenvolupament d'Android
- Introducció al Desenvolupament d'Android amb Kotlin
- Construcció d'Interfícies d'Usuari
- Gestió de l'Entrada de l'Usuari
- Xarxes i Emmagatzematge de Dades
- Proves i Depuració
