Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Getter ja Setter | Luokat Jatko
Java Laajennettu
course content

Kurssisisältö

Java Laajennettu

Java Laajennettu

1. Syvällinen Java-rakenne
2. Metodit
3. Merkkijonon Jatkotaso
4. Luokat
5. Luokat Jatko

book
Getter ja Setter

Paras tapa ohittaa private-muuttujan näkyvyysmuuttuja

Kaikki Java-ohjelmoijat käyttävät rakenteita nimeltä getterit ja setterit.

Getterit ja setterit ovat metodeja, jotka noudattavat tiettyä kaavaa. Niiden avulla voidaan ohittaa private-näkyvyysmuuttuja ja käsitellä kenttiä toisesta luokasta.

Mitä getterit ja setterit tekevät?

Yksinkertaisesti sanottuna setteri mahdollistaa arvon asettamisen kenttään, jota suojaa private-näkyvyysmuuttuja, kun taas getterin avulla voidaan hakea arvo kentästä, jota suojaa private-näkyvyysmuuttuja.

Getterin ja setterin syntaksi:

Main.java

Main.java

copy
123456789
// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }

Kuten yllä olevasta koodista näet, käytämme metodeille nimeämiskäytäntöä getFieldName() ja setFieldName(). Jos meillä siis on kenttä private String name ja luomme getterin ja setterin nimillä getName() ja setName(), vastaavasti. On myös huomioitava, että getter palauttaa arvon, jonka tyyppi on sama kuin name-kentällä, kun taas setteri ottaa parametrin, jonka tyyppi on sama kuin name-kentällä.

Tämän avulla voimme käyttää kenttiä, joita suojaa private-näkyvyysmuuttuja. Katsotaanpa esimerkkiä siitä, miten päästään käsiksi private-kenttään Person-luokasta main-luokassa:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }

Kuten huomaat, käytämme setteriä asettaaksemme arvon name-kentälle, ja sen jälkeen käytämme getter-metodia näyttääksemme name-kentän arvon näytöllä. Kiinnitä huomiota getter- ja setter-metodien syntaksiin sekä siihen, että name-luokan Person-kenttä on suojattu private-näkyvyysmuuttujalla.

Konstruktori vs Getter/Setter

Kumpi on parempi käyttää, alustaminen konstruktorin avulla + toString()-metodin ylikirjoittaminen vai getterien ja setterien käyttö?

On ehdottomasti parempi käyttää gettereitä ja settereitä kenttiin, jotka on suojattu private-näkyvyysmuuttujalla. Tämä tarjoaa suurempaa joustavuutta koodissa ja parantaa sen luettavuutta. Kun näet getName()-metodin käytön koodissa, ymmärrät heti, että tämä metodi hakee kentän nimeltä name. Sama pätee, kun näet setName()-metodin käytön – ymmärrät heti, että asetat tietyn arvon kentälle kyseisen luokan olion kohdalla. Jos muut ihmiset lukevat koodiasi, he ilahtuvat nähdessään getterit ja setterit.

On myös huomioitava, että jokainen kenttä tarvitsee oman getterin ja setterin. Jos luokassa on kaksi kenttää, jotka on suojattu private-näkyvyysmuuttujalla, luokassa tulisi olla yksi getter jokaista kenttää kohden, eli kaksi getteriä ja kaksi setteriä. Katsotaanpa esimerkkiä, jossa lisäämme age-kentän Person-luokkaan:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

Kuten huomaat, olemme luoneet yhden getterin ja yhden setterin jokaiselle Person-luokan kentälle. main-metodissa alustimme kentät setterin avulla ja näytimme niiden arvot näytöllä getterin avulla. Näiden metodien käyttö on erittäin kätevää, ja tulet käyttämään niitä usein tulevaisuudessa.

1. Mikä on getterien ja setterien käyttötarkoitus?

2. Mikä on getter-metodin syntaksi Javassa?

3. Mikä on setter-menetelmän syntaksi Javassa?

question mark

Mikä on getterien ja setterien käyttötarkoitus?

Select the correct answer

question mark

Mikä on getter-metodin syntaksi Javassa?

Select the correct answer

question mark

Mikä on setter-menetelmän syntaksi Javassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

course content

Kurssisisältö

Java Laajennettu

Java Laajennettu

1. Syvällinen Java-rakenne
2. Metodit
3. Merkkijonon Jatkotaso
4. Luokat
5. Luokat Jatko

book
Getter ja Setter

Paras tapa ohittaa private-muuttujan näkyvyysmuuttuja

Kaikki Java-ohjelmoijat käyttävät rakenteita nimeltä getterit ja setterit.

Getterit ja setterit ovat metodeja, jotka noudattavat tiettyä kaavaa. Niiden avulla voidaan ohittaa private-näkyvyysmuuttuja ja käsitellä kenttiä toisesta luokasta.

Mitä getterit ja setterit tekevät?

Yksinkertaisesti sanottuna setteri mahdollistaa arvon asettamisen kenttään, jota suojaa private-näkyvyysmuuttuja, kun taas getterin avulla voidaan hakea arvo kentästä, jota suojaa private-näkyvyysmuuttuja.

Getterin ja setterin syntaksi:

Main.java

Main.java

copy
123456789
// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }

Kuten yllä olevasta koodista näet, käytämme metodeille nimeämiskäytäntöä getFieldName() ja setFieldName(). Jos meillä siis on kenttä private String name ja luomme getterin ja setterin nimillä getName() ja setName(), vastaavasti. On myös huomioitava, että getter palauttaa arvon, jonka tyyppi on sama kuin name-kentällä, kun taas setteri ottaa parametrin, jonka tyyppi on sama kuin name-kentällä.

Tämän avulla voimme käyttää kenttiä, joita suojaa private-näkyvyysmuuttuja. Katsotaanpa esimerkkiä siitä, miten päästään käsiksi private-kenttään Person-luokasta main-luokassa:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }

Kuten huomaat, käytämme setteriä asettaaksemme arvon name-kentälle, ja sen jälkeen käytämme getter-metodia näyttääksemme name-kentän arvon näytöllä. Kiinnitä huomiota getter- ja setter-metodien syntaksiin sekä siihen, että name-luokan Person-kenttä on suojattu private-näkyvyysmuuttujalla.

Konstruktori vs Getter/Setter

Kumpi on parempi käyttää, alustaminen konstruktorin avulla + toString()-metodin ylikirjoittaminen vai getterien ja setterien käyttö?

On ehdottomasti parempi käyttää gettereitä ja settereitä kenttiin, jotka on suojattu private-näkyvyysmuuttujalla. Tämä tarjoaa suurempaa joustavuutta koodissa ja parantaa sen luettavuutta. Kun näet getName()-metodin käytön koodissa, ymmärrät heti, että tämä metodi hakee kentän nimeltä name. Sama pätee, kun näet setName()-metodin käytön – ymmärrät heti, että asetat tietyn arvon kentälle kyseisen luokan olion kohdalla. Jos muut ihmiset lukevat koodiasi, he ilahtuvat nähdessään getterit ja setterit.

On myös huomioitava, että jokainen kenttä tarvitsee oman getterin ja setterin. Jos luokassa on kaksi kenttää, jotka on suojattu private-näkyvyysmuuttujalla, luokassa tulisi olla yksi getter jokaista kenttää kohden, eli kaksi getteriä ja kaksi setteriä. Katsotaanpa esimerkkiä, jossa lisäämme age-kentän Person-luokkaan:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

Kuten huomaat, olemme luoneet yhden getterin ja yhden setterin jokaiselle Person-luokan kentälle. main-metodissa alustimme kentät setterin avulla ja näytimme niiden arvot näytöllä getterin avulla. Näiden metodien käyttö on erittäin kätevää, ja tulet käyttämään niitä usein tulevaisuudessa.

1. Mikä on getterien ja setterien käyttötarkoitus?

2. Mikä on getter-metodin syntaksi Javassa?

3. Mikä on setter-menetelmän syntaksi Javassa?

question mark

Mikä on getterien ja setterien käyttötarkoitus?

Select the correct answer

question mark

Mikä on getter-metodin syntaksi Javassa?

Select the correct answer

question mark

Mikä on setter-menetelmän syntaksi Javassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 5
some-alt