Differenza tra variabile privata e pubblica
Una variabile privata può essere vista solo dai membri (proprietà e metodi) all'interno della definizione della classe. Non può essere visto dal codice al di fuori della definizione della classe. D'altra parte, una variabile pubblica può essere vista tramite codice al di fuori della definizione della classe. Il codice al di fuori della classe può semplicemente modificare la variabile pubblica di una classe assegnando un nuovo valore utilizzando il nome della classe se il metodo è statico o usando il nome dell'oggetto se il metodo non è statico. Con una variabile pubblica, il senso di mutazione non è proprio lì. Ma quando una classe cambia il proprio valore, che non può essere cambiato dall'esterno, che si chiama trasformazione - che ha un migliore senso di mutazione.
Illustrazione mutatore
Non ogni classe ha bisogno di un mutatore. Tuttavia, quando è necessario un mutatore per una variabile privata (proprietà), il metodo mutatore che è un membro della classe, dovrebbe iniziare con "set". Il programmatore definisce quindi il metodo del mutatore.
Qualsiasi oggetto in un negozio può essere definito da una classe. Una buona tazza in un negozio, ad esempio, può essere definita da una classe. Come minimo, la classe avrebbe una proprietà che è il prezzo della coppa, un metodo mutatore e un metodo degli accessori. Il metodo degli accessori è un metodo per leggere il valore della proprietà. Per convenzione, il metodo degli accessori dovrebbe iniziare con "get". In questo caso, sarebbe getPrice (). Lascia che la proprietà con il prezzo del nome sia privato. Se il prezzo è pubblico, allora non sarà necessario mutatore e accessori, poiché il valore potrebbe essere impostato o ottenuto (leggi) pubblicamente.
La seguente definizione della classe è per una tazza (una proprietà aggiuntiva (campo) per la valuta):
Classe CupIl mutatore setPrice () è pubblico in modo che sia possibile accedere a codice al di fuori della classe. Rendere pubblico il mutatore non significa rendere pubblica la proprietà corrispondente. La proprietà corrispondente deve essere privata. Il mutatore qui ha l'argomento DBL che è il nuovo prezzo. Man mano che le condizioni del mercato cambiano, il prezzo nel negozio cambia anche. Se il prezzo fosse pubblico, non sarebbe necessario per il mutatore setPrice () in quanto sarebbe possibile per il codice al di fuori della classe modificare il prezzo. Poiché SETPRICE è un membro della classe, può vedere il valore del prezzo di proprietà privata. Tuttavia, il codice al di fuori della classe non può vedere la proprietà. Questo è di design.
AccSessor getPrice () è pubblico in modo che sia possibile accedere a codice al di fuori della classe. Non ha alcun argomento. Se il prezzo fosse pubblico, non sarebbe necessario per l'accessor getprice () in quanto sarebbe possibile per il codice al di fuori della classe leggere il prezzo. Poiché GetPrice è un membro della classe, può vedere il valore del prezzo di proprietà privata. Tuttavia, il codice al di fuori della classe non può vedere la proprietà. Questo è di design.
Un mutatore setCurrency () e un accessorio getCurrency () possono essere scritti allo stesso modo per la valuta variabile privata.
La seguente classe principale e il metodo principale accedono al prezzo variabile privato, muta la variabile e quindi accede nuovamente alla variabile; Tutto questo dopo istanziare la classe:
Classe pubblica TheClassL'output è:
2.0, 3.0Il primo segmento di codice nel metodo principale istanzia l'oggetto Cup (CUP1) e accede al prezzo della proprietà privata tramite l'accessorio GetPrice () e CUP1. Quindi stampa questo primo prezzo con una virgola e uno spazio.
Il secondo segmento di codice è un segmento di codice a una riga. Muta il prezzo della proprietà privata attraverso il mutatore setPrice () e Cup1. Il terzo segmento di codice legge e stampa il nuovo prezzo.
Convalida
L'utente del programma dovrebbe impostare il nuovo prezzo come doppio. Ma cosa succede se inserisce qualche altro tipo di dati? Il nuovo prezzo dovrebbe essere validato se è veramente un doppio. Il codice di riga per questo caso dovrebbe apparire così:
booleano bl = dbl istanza del doppio;L'operatore, istanza di restituisce vero, se il suo operando sinistro è un'istanza dell'operando destro; falso altrimenti.
Con la convalida, la definizione del metodo mutatore dovrebbe essere:
public void setPrice (double dbl)Cioè, se il dbl di input è di tipo doppio, allora il prezzo viene modificato. In caso contrario, viene emesso un messaggio di errore e il programma continua. Si noti che 'D' per il doppio in questo segmento di codice è 'd' e non 'd'.
Un codice simile da verificare se la valuta è un personaggio può essere scritto come segue:
public void setCurrency (personaggio ch)Cioè, se l'ingresso CH è di carattere di tipo, allora la valuta viene cambiata da $ a "€". In caso contrario, viene emesso un messaggio di errore e il programma continua. Si noti che "C" per il carattere in questo segmento di codice è "C" e non "C".
Conclusione
Non esiste un metodo predefinito come mutatore in Java. Un mutatore è codificato dal programmatore. Un mutatore è solo un metodo codificato (pubblico) che modifica il valore privato di un campo (proprietà) di una classe. D'altra parte, un accessorio è solo un metodo codificato (pubblico) che legge il valore privato di un campo (proprietà) di una classe.
Grazie per aver letto il nostro articolo. Lascia un commento sui tuoi pensieri e leggi altri articoli su Linuxhint.com che si adatta meglio alle idee che stai cercando.