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 klasyMUTOR 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 THEClassWyjście to:
2.0, 3.0Pierwszy 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)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)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.