Programmieren – die besten Beiträge

Was bringt der Einsatz von Setter und Getter in JavaScript?

Kurz: Ich verstehe nicht, was der Einsatz von set und get mir in der Praxis bringt. Ich weiß, dass er was mit Zugriffseigenschaften zu tun hat, aber ich vermische das glaube ich mit der Datenkapselung und der Privatisierung der Eigenschaften und Methoden über # (oder auch nicht, ich bin verwirrt).

Folgendes Beispiel sei gegeben, was genau macht hier den Unterschied? Egal ob ich nun den Abschnitt mit set und get niederschreibe oder nicht, an den Ausgabebefehlen und Ergebnissen ändert sich nichts. Ich kann auch problemlos die einzelnen Werte der Objektinstanz "fish". Ich wäre froh, wenn mir das jemand (möglichst einfach) erklären könnte. Soll der Zugriff von außen verhindert werden? Aber dafür habe ich ja #.



//Gegeben sei Klasse Animal
class Animal {
    
    _name = "";
    _color = "";
    _age = "";


    
    
    constructor(name, color, age) {                     
        this._name = name ? name : this._name;          
        this._color = color ? color : this._color;      
        this._age = age ? age : this._age;              
    }


    //Getter und Setter
    get name() {
        return this._name;
    }


    set name(name) {
        this._name = name;
    }


    get color() {
        return this._color;
    }


    set color(color) {
        this._color = color;
    }


    get age() {
        return this._age;
    }


    set age(age) {
        this._age = age;
    }


    //Ein paar Methoden
    eat(food) {
        console.log(`Mhh, ${food}`);
    }


    
    drink(drink) {
        console.log(`Schlürf, ${drink}`);
    }


    
    toString() {
        return `${this.name}, ${this.color}, ${this.age}`;
    }


}



//Erzeugung neuer Objektinstanz
const fish = new Animal("Fischi", "Grün", 2);               



console.log(fish.name);             //Ausgabe Fischi



fish.name = "Flipper";             //Neue Wertzuweisung
console.log(fish.name);            //Ergebnis Flipper
programmieren, JavaScript

jetpack compose - wie starte ich eine neue Activity?

Hallo zusammen

Ich habe folgendes Composable in meinem Code:

@Composable
fun Toolbar() {

    // Create a boolean variable
    // to store the display menu state
    var mDisplayMenu by remember { mutableStateOf(false) }

    // fetching local context
    val mContext = LocalContext.current

    // Creating a Top bar
    TopAppBar(
        title = { Text(stringResource(R.string.app_name)) },backgroundColor = Color(0xFFFFFFFF),
                actions = {

                    // would create a Toast message
                    IconButton(onClick = {
                        val intent = Intent(this, LockScreenActivity::class.java)
                        startActivity(intent)
                        Toast.makeText(mContext, "Lock app...", Toast.LENGTH_SHORT).show() }) {
                        Icon(Icons.Outlined.Lock, "")

Nun möchte ich gerne, dass wenn man auf das lock icon klickt, die dazugehörige Activity "LockScreenActivity" gestartet wird. Folgende Fehlermeldung erhalte ich jedoch bei "val intent = Intent"

None of the following functions can be called with the arguments supplied.
<init>(Context!, Class<*>!) defined in android.content.Intent
<init>(String!, Uri!) defined in android.content.Intent

Ich weiss nicht genau, warum diese Fehlermeldung auftritt bzw. warum es nun noch ein Argument benötigt. Könnte mir bitte Jemand helfen?

Eine Zeile weiter unten bestätigt sich nochmals mein Fehler mit der Meldung No value passed for parameter 'intent'

No value passed for parameter 'intent'

Vielen Dank für jede Hilfe.

programmieren, Android, Code, compose, Android Studio, Kotlin

Meistgelesene Beiträge zum Thema Programmieren