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:

  1. public
  2. private
  3. protected
  4. internal

  1. 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.")
    }
}

  1. 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.

  1. 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.")
    }
}

  1. 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.

internal class Utilitats {
    internal fun calcularSuma(a: Int, b: Int): Int {
        return a + b
    }
}

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 tipus String amb visibilitat public.
  • Una propietat any de tipus Int amb visibilitat private.
  • Una funció detalls amb visibilitat public que imprimeixi la marca i l'any del cotxe.
  • Una funció anysDesDeFabricacio amb visibilitat private 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 tipus String amb visibilitat internal.
  • Una propietat sou de tipus Double amb visibilitat protected.
  • Una funció mostrarNom amb visibilitat public que imprimeixi el nom de l'empleat.
  • Una funció calcularBonus amb visibilitat protected 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!

© Copyright 2024. Tots els drets reservats