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:
public
private
protected
internal
public
public
El 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
private
El 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
protected
El 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
internal
El 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
marca
de tipusString
amb visibilitatpublic
. - Una propietat
any
de tipusInt
amb visibilitatprivate
. - Una funció
detalls
amb visibilitatpublic
que imprimeixi la marca i l'any del cotxe. - Una funció
anysDesDeFabricacio
amb visibilitatprivate
que 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
nom
de tipusString
amb visibilitatinternal
. - Una propietat
sou
de tipusDouble
amb visibilitatprotected
. - Una funció
mostrarNom
amb visibilitatpublic
que imprimeixi el nom de l'empleat. - Una funció
calcularBonus
amb visibilitatprotected
que 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ó