Metoda mutatora w Javie

Metoda mutatora w Javie
W słowniku angielskim, zmutowanie oznacza, że ​​posiadanie nowej formy. I tak mutator, choć nie znaleziono w angielskim słowniku, oznacza coś, co powoduje zmianę w nową formę. Zmienna prywatna to pole lub właściwość klasy w Javie. W Javie nie ma predefiniowanej metody zwanej mutator. Zamiast tego mutator jest metodą w klasie, a ta metoda ma na celu zmianę wartości prywatnej zmiennej klasy klasy. Według konwencji programista powinien rozpocząć nazwę metody od „Set”. Tak więc metodą może być coś w rodzaju setage (), setPrice (), setname () itp.

Różnica między zmienną prywatną i publiczną

Zmienną prywatną może być tylko przez członków (właściwości i metody) w definicji klasy. Nie można go zobaczyć w kodzie poza definicją klasy. Z drugiej strony zmienną publiczną można zobaczyć według kodu poza definicją klasy. Kod poza klasą może po prostu zmienić zmienną publiczną klasy, przypisując nową wartość za pomocą nazwy klasy, jeśli metoda jest statyczna lub za pomocą nazwy obiektu, jeśli metoda nie jest statyczna. Z zmienną publiczną poczucie mutacji nie ma tak naprawdę. Ale kiedy klasa zmienia swoją wartość, której nie można zmienić z zewnątrz, nazywa się transformacją - która ma lepsze poczucie mutacji.

Ilustracja mutatora

Nie każda klasa potrzebuje mutatora. Jednak gdy mutator jest potrzebny dla zmiennej prywatnej (właściwości), metoda mutatora, która jest członkiem klasy, powinna zacząć od „ustawionej”. Programator następnie definiuje metodę mutatora.

Każdy obiekt w sklepie może być zdefiniowany przez klasę. Na przykład dobry kubek w sklepie może być zdefiniowany przez klasę. Co minimum, klasa miałaby nieruchomość, która jest ceną kubka, metodę mutatora i metodę akcesoriów. Metoda akcesoriów jest metodą odczytu wartości właściwości. Według konwencji metoda akcesoriów powinna rozpocząć się od „Get”. W takim przypadku byłby to GetPrice (). Niech nieruchomość o cenie nazwy będzie prywatna. Jeśli cena jest publiczna, to nie będzie potrzeby mutatora i akcesorii, ponieważ wartość może być ustawiona lub otrzymana (odczytowa) publicznie.

Poniższa definicja klasy dotyczy kubka (dodano dodatkową właściwość (pole) dla waluty):

Puchar klasy
prywatna podwójna cena = 2.0;
Prywatna waluta znaków = „$”;
public void setPrice (double dbl)
cena = dbl;

public DoublePrice ()
Cena zwrotna;

MUTOR SETPRICE () jest publiczny, dzięki czemu można uzyskać do niego kod poza klasą. Upublicznienie mutatora nie oznacza upublicznienia odpowiedniej nieruchomości. Odpowiednia nieruchomość musi być prywatna. Mutator ma tutaj argument DBL, który jest nową ceną. Gdy zmieniają się warunki rynkowe, cena w sklepie również się zmienia. Gdyby cena była publiczna, nie byłoby potrzeby mutatora setPrice (), ponieważ można byłoby zmienić cenę kod poza klasą. Ponieważ SetPrice jest członkiem klasy, może zobaczyć wartość ceny nieruchomości prywatnej. Jednak kod poza klasą nie widzi właściwości. To jest według projektu.

AccSessor getPrice () jest publiczny, aby można było uzyskać do niego kod poza klasą. Nie ma argumentu. Gdyby cena była publiczna, nie byłoby potrzeby akcesorora getPrice (), ponieważ kod byłby możliwy do odczytania ceny. Ponieważ GetPrice jest członkiem klasy, może zobaczyć wartość ceny nieruchomości prywatnej. Jednak kod poza klasą nie widzi właściwości. To jest według projektu.

Mutator setCurrency () i akcesorator getCurrency () można podobnie zapisać dla prywatnej waluty zmiennej.

Poniższa główna klasa i główna metoda uzyskuje dostęp do ceny zmiennej prywatnej, muruje zmienną, a następnie ponownie uzyskuje dostęp do zmiennej; Wszystkie te po instanowaniu klasy:

Klasa publiczna THEClass
public static void main (string [] args)
Cup Cup1 = nowy Puchar ();
podwójna pierwsza cena = kubek1.getPrice ();
System.na zewnątrz.druk (pierwsza cena); System.na zewnątrz.print (",");
Puchar1.SetPrice (3.0);
Podwójna druga wartość = cup1.getPrice ();
System.na zewnątrz.druk (druga roczna);
System.na zewnątrz.println ();

Wyjście to:

2.0, 3.0

Pierwszy segment kodu w głównej metodzie utworzy instancję obiektu Pucharu (CUP1) i uzyskuje dostęp do ceny nieruchomości prywatnej za pośrednictwem Accessor GetPrice () i Cup1. Następnie drukuje tę pierwszą cenę z przecinkiem i przestrzenią.

Drugi segment kodu to segment kodu jednego wiersza. Mutuje cenę nieruchomości prywatną za pośrednictwem mutatora setPrice () i cup1. Trzeci segment kodu odczytuje i drukuje nową cenę.

Walidacja

Użytkownik programu ma ustawić nową cenę jako podwójną. Ale co, jeśli wprowadzi inny typ danych? Nowa cena powinna zostać zatwierdzona, jeśli jest to naprawdę podwójne. Kod linii dla tej sprawy powinien wyglądać tak:

boolean bl = dbl instanceOf Double;

Operator, instancja zwrotu True, jeśli jego lewy operand jest instancją prawego operandu; Fałsz inaczej.

W sprawie walidacji definicja metody mutatora powinna być:

public void setPrice (double dbl)
if (instance dbl podwójny)
cena = dbl;
w przeciwnym razie
System.na zewnątrz.println („Nie można ustawić nowej ceny!");

To znaczy, jeśli wejście DBL jest typu podwójne, cena jest zmieniana. Jeśli tak nie jest, wydano komunikat o błędzie, a program trwa. Zauważ, że „d” dla podwójnego w tym segmencie kodu to „d”, a nie „d”.

Podobny kod do sprawdzenia, czy waluta jest znakiem, można zapisać w następujący sposób:

public void setCurrency (znak Ch)
If (Charakter CH instanceof)
waluta = „€”;
w przeciwnym razie
System.na zewnątrz.println („Nowa waluta nie jest postacią!");

To znaczy, jeśli wejście CH ma charakter typu, wówczas waluta jest zmieniana z $ na „€”. Jeśli tak nie jest, wydano komunikat o błędzie, a program trwa. Zauważ, że „C” dla charakteru w tym segmencie kodu to „c”, a nie „c”.

Wniosek

Nie ma predefiniowanej metody jako mutatora w Javie. Mutor jest kodowany przez programistę. Mutor to tylko kodowana (publiczna) metoda, która zmienia prywatną wartość pola (właściwości) klasy. Z drugiej strony akcesor jest tylko metodą zakodowaną (publiczną), która odczytuje prywatną wartość pola (właściwości) klasy.

Dziękujemy za przeczytanie naszego artykułu. Zostaw komentarz na temat swoich myśli i przeczytaj inne artykuły na temat Linuxhint.com, które najlepiej pasują do pomysłów, których szukasz.