์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[31] 230210 Java Ch. 6 ํด๋์ค: 2. ํ๋, 3. ์์ฑ์, 4. ๋ฉ์๋ [K-๋์งํธ ํธ๋ ์ด๋ 31์ผ] ๋ณธ๋ฌธ
[31] 230210 Java Ch. 6 ํด๋์ค: 2. ํ๋, 3. ์์ฑ์, 4. ๋ฉ์๋ [K-๋์งํธ ํธ๋ ์ด๋ 31์ผ]
yjyuwisely 2023. 2. 10. 12:50230210 Fri 31th class
Ch. 6 ํด๋์ค
์ง๋: p. 248 ~ (๊ต์ฌ: ํผ์ ๊ณต๋ถํ๋ ์๋ฐ, ์ ์: ์ ์ฉ๊ถ)
ํผ์ ๊ณต๋ถํ๋ ์๋ฐ | ์ ์ฉ๊ถ - ๊ต๋ณด๋ฌธ๊ณ
ํผ์ ๊ณต๋ถํ๋ ์๋ฐ | ํผ์ ํด๋ ์ถฉ๋ถํ๋ค! 1:1 ๊ณผ์ธํ๋ฏ ๋ฐฐ์ฐ๋ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์์ต์ (JAVA 8 &11 ์ง์) ์ด ์ฑ ์ ๋ ํ์ผ๋ก ์๋ฐ๋ฅผ ๋ฐฐ์ฐ๋ ์ ๋ฌธ์๊ฐ โ๊ผญ ํ์ํ ๋ด์ฉ์ ์ ๋๋กโ ํ์ตํ ์ ์๋
product.kyobobook.co.kr
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
Ch. 6 ํด๋์ค
์ฑ ์ ๋ชฉ์ฐจ
06-1 ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
06-2 ํ๋
06-3 ์์ฑ์
06-4 ๋ฉ์๋
06-5 ์ธ์คํด์ค ๋ฉค๋ฒ์ ์ ์ ๋ฉค๋ฒ
06-6 ํจํค์ง์ ์ ๊ทผ ์ ํ์
6.2 ํ๋(Field) p. 224
ํ๋: ๊ฐ์ฒด์ ๋ฐ์ดํฐ(๋ฉค๋ฒ ๋ณ์)๊ฐ ์ ์ฅ๋๋ ๊ณณ. ์์ฑ์์ ๋ฉ์๋ ์ ์ฒด์์ ์ฌ์ฉ๋๋ฉฐ ๊ฐ์ฒด๊ฐ ์๋ฉธ๋์ง ์๋ ํ ๊ฐ์ฒด์ ํจ๊ป ์กด์ฌํ๋ค.
ํ๋๋ ๊ฐ์ฒด์ ๊ณ ์ ๋ฐ์ดํฐ, ๊ฐ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ ๋ถํ, ๊ฐ์ฒด์ ํ์ฌ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณณ์ด๋ค.
public class Car{ //ํ๋(์ ์ญ๋ณ์) //์๋๋ ๊ธฐ๋ณธ ํ์
์ด๋ค. //์ ์ํ์ฌ(ํ๋, ์ผ์ฑ, ๊ธฐ์) String company; //๋ชจ๋ธ(SONATA, K5, SM) String model; //์๊น(WHITE, BLACK, GRAY) String color //์ต๊ณ ์๋(200) int maxSpeed; //ํ์ฌ ์๋(60) int speed; //์์ง ํ์ ์(1200RPM) int rmp; //์๋๋ ์ฐธ์กฐ ํ์
์ด๋ค. //๋ถํ Body body; //์์ง Engine engine; //ํ์ด์ด Tire tire; //์์ฑ์ //๋ฉ์๋ }

6.2.1 ํ๋ ์ ์ธ
ํด๋์ค ์ค๊ดํธ {} ๋ธ๋ก ์ด๋์๋ ์ ์ธํ๋, ์์ฑ์์ ๋ฉ์๋ ๋ด๋ถ์์๋ ์ ์ธํ ์ ์๋ค.
ํ๋, ์ ์ญ๋ณ์๋ ์ด๊ธฐ๊ฐ์ ์ ์ ์ด๋ ๋๋ค. (์ง์ญ ๋ณ์๋ ์ด๊ธฐ๊ฐ ๋ฃ์ด์ผ ํ๋ค.)
๋ถ๋ฅ | ํ์ | ์ด๊ธฐ๊ฐ | |
๊ธฐ๋ณธ ํ์ | ์ ์ ํ์ | byte | 0 |
char | \u0000 (๋น ๊ณต๋ฐฑ) | ||
short | 0 | ||
int | 0 | ||
long | 0L | ||
์ค์ ํ์ | float | 0.0F | |
double | 0.0 | ||
๋ ผ๋ฆฌ ํ์ | boolean | false | |
์ฐธ์กฐ ํ์ | ๋ฐฐ์ด | null | |
ํด๋์ค(String ํฌํจ) | null | ||
์ธํฐํ์ด์ค | null |
6.2.2 ํ๋ ์ฌ์ฉ
ํ๋๋ฅผ ์ฌ์ฉํ๋ค = ํ๋๊ฐ์ ์ฝ๊ณ ๋ณ๊ฒฝํ๋ ์์
ํด๋์ค ๋ด๋ถ์ ์์ฑ์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋จ์ํ ํ๋ ์ด๋ฆ์ผ๋ก ์ฝ๊ณ ๋ณ๊ฒฝํ๋ฉด ๋์ง๋ง,
ํด๋์ค ์ธ๋ถ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์ฐ์ ์ ์ผ๋ก ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
Car myCar = new Car();
myCar ๋ณ์๊ฐ Car ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ฉด ๋ํธ(.) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ speed ํ๋์ ์ ๊ทผํ ์ ์๋ค.
๋ํธ(.) ์ฐ์ฐ์๋ ๊ฐ์ฒด ์ ๊ทผ ์ฐ์ฐ์๋ก ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํ๋๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉ๋๋ค.
์์ ) Car ํด๋์ค ํ๋ ์ ์ธ Car.java
public class Car { //ํ๋ //์ ์กฐํ์ฌ String company = "ํ๋์๋์ฐจ"; //๋ชจ๋ธ String model = "๊ทธ๋์ "; //์ฐจ์ ์๊น String color = "๊ฒ์ "; //์ต๋ ์๋๊ฐ int maxSpeed = 350; //ํ์ฌ ์๋ int speed; //์์ ๋ค๋ฅด๊ฒ ์ด๊ธฐ๊ฐ์ด ์๋ค. }
์ธ๋ถ ํด๋์ค์์ Car ํ๋๊ฐ ์ฝ๊ธฐ์ ๋ณ๊ฒฝ
//main๋ฉ์๋๊ฐ ์๋ ํด๋์ค์์ ๊ฐ์ฒด ์์ฑ public class CarExample { public static void main(String[] args) { //new๋ผ๋ ํค์๋๋ก [ํธ์ถ]ํ๋ค. //Carํด๋์ค์์ ์์ฑ๋ ์๋ก์ด ์ฃผ์(new)๋ฅผ mycar๋ณ์์ ์ ์ฅํ๋ค. // int a = 10 Car mycar = new Car(); //Carํด๋์ค์ ์๋ ํ๋๊ฐ ๊ฐ์ ธ์ค๊ธฐ System.out.println("์ ์ํ์ฌ : " + mycar.company); System.out.println("๋ชจ๋ธ๋ช
: " + mycar.company); System.out.println("์๊น : " + mycar.company); System.out.println("์ต๊ณ ์๋ : " + mycar.company); System.out.println("ํ์ฌ์๋ : " + mycar.company); } }
์์ 2) ํ๋ ์๋ ์ด๊ธฐํ
public class FieldInitValue { //ํ๋ byte byteField;//ํ์
์ด byte๋ฉด, ๊ธฐ๋ณธ๊ฐ์ 0 short shortField; //ํ์
์ด short์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ 0 int intField; //ํ์
์ด int์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ 0 long longField; //ํ์
์ด long์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ 0 boolean booleanField; //ํ์
์ด boolean๋ฉด, ๊ธฐ๋ณธ๊ฐ์ false char charField; //ํ์
์ด char์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ ๋น ๊ณต๋ฐฑ float floatField; //ํ์
์ด float๋ฉด, ๊ธฐ๋ณธ๊ฐ์ 0.0 double doubleField; //ํ์
์ด double์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ 0.0 int[] arrField; //ํ์
์ด ๋ฐฐ์ดํ์
์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ null String referenceField; //ํ์
์ด String์ด๋ฉด, ๊ธฐ๋ณธ๊ฐ์ null }
ํ๋๊ฐ ์ถ๋ ฅ
FieldInitValue fiv = new FieldInitValue();
public class FieldInitValueExample { public static void main(String[] args) { FieldInitValue fiv = new FieldInitValue(); System.out.println("byteField: " + fiv.byteField); System.out.println("shortField: " + fiv.shortField); System.out.println("intField: " + fiv.intField); System.out.println("longField: " + fiv.byteField); System.out.println("booleanField: " + fiv.booleanField); System.out.println("charField: " + fiv.charField); System.out.println("floatField: " + fiv.floatField); System.out.println("doubleField: " + fiv.doubleField); System.out.println("arrField: " + fiv.arrField); System.out.println("referenceField: " + fiv.referenceField); } }
๊ฒฐ๊ณผ)
byteField: 0 shortField: 0 intField: 0 longField: 0 booleanField: false charField: floatField: 0.0 doubleField: 0.0 arrField: null referenceField: null
๋ง๋ฌด๋ฆฌ
2๊ฐ์ง ํค์๋๋ก ๋๋ด๋ ํต์ฌ ํฌ์ธํธ
1) ํ๋ ์ ์ธ: ํด๋์ค ์ค๊ดํธ {} ๋ธ๋ก ์ด๋์๋ ์ ์ธํ๋, ์์ฑ์์ ๋ฉ์๋ ๋ด๋ถ์์๋ ์ ์ธํ ์ ์๋ค.
2) ํ๋ ์ฌ์ฉ: ํด๋์ค ๋ด๋ถ์ ์์ฑ์์ ๋ฉ์๋์์ ๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋, ํด๋์ค ์ธ๋ถ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ฐธ์กฐ ๋ณ์๋ฅผ ํตํด ์ฌ์ฉํด์ผ ํ๋ค.
Q2
์ฝ๋)
public class Member { //์ด๋ฆ("์ ์๋ฐ") String name; //์์ด๋("abcd") String id; //ํจ์ค์๋("abcd1234!!") String password; //๋์ด(30) int age; }
Q3
์ฝ๋) Member member = new Member();
public class MemberExample { public static void main(String[] args) { //Member ํด๋์ค ๊ฐ์ฒด ์์ฑ Member member = new Member(); member.name = "์ตํ์";//name ํ๋๊ฐ ๋ณ๊ฒฝ member.age = 23;//age ํ๋๊ฐ ๋ณ๊ฒฝ } }
6.3 ์์ฑ์ p. 232
์์ฑ์: new ํค์๋๋ก ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํธ์ถ๋์ด ๊ฐ์ฒด์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํ๋ค.
(๊ฐ์ฒด ์์ฑ: Car mycar = new Car();)
๊ฐ์ฒด ์ด๊ธฐํ:
ํ๋๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋ ์์ฑ์ ๋ด๋ถ์์ ํ๋๊ฐ์ ์ด๊ธฐํํ ์ ์์ผ๋ฉฐ,
๋ฉ์๋๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ๋ ๊ฒ์ด๋ค.
์๋ฐ์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ํ๋ ๊ฐ์ผ๋ก ์ด๊ธฐํํ ์ ์๋ ์์ฑ์(constructor)๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฐ์์ ์์ฑ์(constructor)์ ์ด๋ฆ์ ํด๋น ํด๋์ค์ ์ด๋ฆ๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
์ฆ, Car ํด๋์ค์ ์์ฑ์์ ์ด๋ฆ์ Car๊ฐ ๋ฉ๋๋ค.
์ด๋ฌํ ์์ฑ์๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๋๋ค.
1. ์์ฑ์๋ ๋ฐํ๊ฐ์ด ์์ง๋ง, ๋ฐํ ํ์ ์ voidํ์ผ๋ก ์ ์ธํ์ง ์์ต๋๋ค.
2. ์์ฑ์๋ ์ด๊ธฐํ๋ฅผ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ์์ต๋๋ค.
3. ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ์๋ ํ๋์ ํด๋์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ ์์ฑ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
์ฆ, ์์ฑ์๋ ํ๋์ ๋ฉ์๋์ด๋ฏ๋ก, ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์ ๋๋ค.
์ฐธ๊ณ : http://www.tcpschool.com/java/java_methodConstructor_constructor

6.3.1 ๊ธฐ๋ณธ ์์ฑ์
๋ชจ๋ ํด๋์ค๋ ์์ฑ์๊ฐ ๋ฐ๋์ ์กด์ฌํ๋ฉฐ, ์์ฑ์๋ฅผ ํ๋ ์ด์ ๊ฐ์ง ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ํด๋์ค ๋ด๋ถ์ ์์ฑ์ ์ ์ธ์ ์๋ตํ๋ค๋ฉด ํด๋์ค ์ ์ธ ์ ์ปดํ์ผ๋ฌ์ ์ํด ์๋์ผ๋ก ์ถ๊ฐ๋๋ ์์ฑ์์ด๋ค. (์์ฑ์๋ฅผ ์๋ตํ๋ฉด ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๋ค.) ์ธ๊ธ ์ ํ๋ฉด ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ด๋ค.
ํด๋์ค๊ฐ public class๋ก ์ ์ธ๋๋ฉด ๊ธฐ๋ณธ ์์ฑ์์์๋ public์ด ๋ถ์ง๋ง,
ํด๋์ค๊ฐ public ์์ด class๋ก๋ง ์ ์ธ๋๋ฉด ๊ธฐ๋ณธ ์์ฑ์์๋ public์ด ๋ถ์ง ์๋๋ค.
ํด๋์ค์ ์์ฑ์๋ฅผ ์ ์ธํ์ง ์์๋ new ์ฐ์ฐ์ ๋ค์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
Car myCar = new Car();
Car(): ๊ธฐ๋ณธ ์์ฑ์
javascript์ ๊ฒฝ์ฐ
ํจ์ ์ ์ธ
function add1(){}
function add2(a,b){}
ํจ์ ํธ์ถ
add1(); //()์ด๋๊น ()๋ฅผ ํธ์ถํ๋ค.
add2(10,20); //(a,b)์ด๋๊น (10,20)์ ํธ์ถํ๋ค.
6.3.2 ์์ฑ์ ์ ์ธ
ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํธ์ถ๋๋ ์์ฑ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ ์ธํ ์ ์๋ค.
์์ฑ์๋ฅผ ์ ์ธํ๋ฉด ๊ธฐ๋ณธ ์์ฑ์๋ ์์ฑ๋์ง ์๋๋ค.
1. ํด๋์ค์ด๋ฆ() { ... } // ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์ ์ ์ธ 2. ํด๋์ค์ด๋ฆ(์ธ์1, ์ธ์2, ...) { ... } // ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์ ์ ์ธ
public class Car { //๊ธฐ๋ณธ ์์ฑ์ //[public] ํด๋์ค๋ช
(){} //Car(){} //๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋ ์์ฑ์๋ฅผ ์ ์ธ //ํด๋์ค๋ช
(ํ์
๋งค๊ฐ๋ณ์๋ช
, ํ์
๋งค๊ฐ๋ณ์๋ช
...){} Car(String color, int cc){ } }
public class CarExample { public static void main(String[] args) { //new๋ผ๋ ํค์๋๋ก [ํธ์ถ]ํ๋ค. //Carํด๋์ค์์ ์์ฑ๋ ์๋ก์ด ์ฃผ์(new)๋ฅผ mycar๋ณ์์ ์ ์ฅํ๋ค. // int a = 10 Car mycar = new Car("๊ฒ์ ",3000); //Car mycar = new Car();(x): ๊ธฐ๋ณธ ์์ฑ์ X } }
6.3.3 ํ๋ ์ด๊ธฐํ p. 235
ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ํ๋๋ ๊ธฐ๋ณธ ์ด๊ธฐ๊ฐ์ผ๋ก ์๋ ์ค์ ๋๋ค.
๋ง์ฝ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๊ณ ์ถ๋ค๋ฉด 1) ํ๋๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐ๊ฐ์ ์ฃผ๋ ๋ฐฉ๋ฒ๊ณผ 2) ์์ฑ์์๊ฒ ์ด๊ธฐ๊ฐ์ ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ค. 1)์ ๊ฒฝ์ฐ ๋์ผํ ํด๋์ค๋ก๋ถํฐ ์์ฑ๋๋ ๊ฐ์ฒด๋ค์ ๋ชจ๋ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ค.
์์ ) ์์ฑ์์์ ํ๋ ์ด๊ธฐํ
'this.ํ๋'๋ this๋ผ๋ ์ฐธ์กฐ ๋ณ์๋ก ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
public class Korean { //ํ๋ //๊ตญ๊ฐ String nation = "๋ํ๋ฏผ๊ตญ"; //๋ํ๋ฏผ๊ตญ์ผ๋ก nationํ๋์ ์ด๊ธฐํ //์ด๊ธฐํ(x) -> ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์์ ์ํด์ "๋ฐ์๋ฐ"๋ผ๋ ๋ฌธ์์ด์ด name ํ๋์ ์ด๊ธฐํ String name; //์ด๊ธฐํ(x) -> ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์์ ์ํด์ "011225-1234567"๋ผ๋ ๋ฌธ์์ด์ด ssn ํ๋์ ์ด๊ธฐํ String ssn; //์๋ ์ถ๊ฐ: ์๋์ชฝ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์์ ์ํด์ //์๋ ์ถ๊ฐ๋ ๊ธฐ๋ณธ์์ฑ์๋ ์์ด์ง๋ค. //Korean() //์์ฑ์ Korean(String name, String ssn){ this.name = name; this.ssn = ssn; } }
6.3.4 ์์ฑ์ ์ค๋ฒ๋ก๋ฉ (Overloading) p. 238
์ธ๋ถ์์ ์ ๊ณต๋๋ ๋ค์ํ ๋ฐ์ดํฐ๋ค์ ์ด์ฉํด์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ ค๋ฉด ์์ฑ์๋ ๋ค์ํ๋ ํ์๊ฐ ์๋ค.
์ค๋ฒ๋ก๋ฉ: ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฌ๋ฆฌํ๋ ์์ฑ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ ๊ฒ์ ๋งํ๋ค.
์ค๋ฒ๋ก๋ฉ์ ์กฐ๊ฑด
- ๋ฉ์๋์ ์ด๋ฆ์ด ๊ฐ๋ค.
- ๋งค๊ฐ ๋ณ์์ ํ์
์ด ๋ค๋ฅด๋ค.
- ๋งค๊ฐ ๋ณ์์ ๊ฐ์๊ฐ ๋ค๋ฅด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฒฝ์ฐ)
//๋ฉ์๋ ์ ์ธ //์ ์+์ ์ int add(int a, int b){ int result = a + b; return result; } //์ ์+์ค์ double add2(int a, double b){ double result = a + b; return result; } //์ค์+์ ์ double add3(double a, int b){ double result = a + b; return result; } //์ค์+์ค์ double add4(double a, double b){ double result = a + b; return result; } //๋ฉ์๋ ํธ์ถ add1(1,2); add2(1,2.5); add3(1.5,2); add4(1.5,2.5);
์๋ฐ์ ๊ฒฝ์ฐ)
//๋ฉ์๋ ํธ์ถ add(1,2); add(1,2.5); add(1.5,2); add(1.5,2.5);
์์ ) ์์ฑ์์ ์ค๋ฒ๋ก๋ฉ p. 239
public class Car { //ํ๋ //์ ์กฐํ์ฌ String company = "ํ๋์๋์ฐจ"; //๋ชจ๋ธ String model; //= "๊ทธ๋์ "; //์ฐจ์ ์๊น String color; //= "๊ฒ์ "; //์ต๋ ์๋๊ฐ int maxSpeed; //= 350; //์์ฑ์ ์ ์ธ Car(){//๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์ - ๊ธฐ๋ณธ ์์ฑ์ } Car(String model){//๋งค๊ฐ ๋ณ์๊ฐ 1๊ฐ์ธ ์์ฑ์ this.model = model; } Car(String model, String color){//๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ์ธ ์์ฑ์ - ๋งค๊ฐ ๋ณ์๋ ํ์
์ด ๊ฐ์(String, String) this.model = model; this.color = color; } Car(String model, int speed){//๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ์ธ ์์ฑ์ - ๋งค๊ฐ ๋ณ์๋ ํ์
์ด ๋ค๋ฆ(String, int) this.model = model; this.speed = speed; } Car(String model, String color, int maxSpeed){//๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ์ธ ์์ฑ์ this.model = model; this.color = color; this.maxSpeed = maxSpeed; } }
์์ ) ๊ฐ์ฒด ์์ฑ ์ ์์ฑ์ ์ ํ
public class CarExample { public static void main(String[] args) { //new๋ผ๋ ํค์๋๋ก [ํธ์ถ]ํ๋ค. //Carํด๋์ค์์ ์์ฑ๋ ์๋ก์ด ์ฃผ์(new)๋ฅผ mycar๋ณ์์ ์ ์ฅํ๋ค. // int a = 10 //Car mycar = new Car("๊ฒ์ ",3000); //Car mycar = new Car();(x): ๊ธฐ๋ณธ ์์ฑ์ X //Carํด๋์ค์ ์๋ ํ๋๊ฐ ๊ฐ์ ธ์ค๊ธฐ //System.out.println("์ ์ํ์ฌ : " + mycar.company); //System.out.println("๋ชจ๋ธ๋ช
: " + mycar.company); //System.out.println("์๊น : " + mycar.company); //System.out.println("์ต๊ณ ์๋ : " + mycar.company); //System.out.println("ํ์ฌ์๋ : " + mycar.company); //Carํด๋์ค์์ ์์ฑ๋ ์๋ก์ด ์ฃผ์(new)๋ฅผ mycar๋ณ์์ ์ ์ฅํ๋ค. // ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์ ํธ์ถ - ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ Car car1 = new Car(); System.out.println(car1.company); System.out.println(); Car car2 = new Car("์๊ฐ์ฉ"); System.out.println(car2.company); System.out.println(car2.model); System.out.println(); Car car3 = new Car("์๊ฐ์ฉ", "๋นจ๊ฐ"); System.out.println(car3.company); System.out.println(car3.model); System.out.println(car3.color); System.out.println(); Car car31 = new Car("์๊ฐ์ฉ", 200); System.out.println(car31.company); System.out.println(car31.model); System.out.println(car31.speed); Car car4 = new Car("์๊ฐ์ฉ", "๋นจ๊ฐ", 200); System.out.println(car4.company); System.out.println(car4.model); System.out.println(car3.color); System.out.println(car4.maxSpeed); } }
6.3.5 ๋ค๋ฅธ ์์ฑ์ ํธ์ถ: this() p. 241
this = ๋
this(): ๊ฐ์ฒด ์์ ์ ๋ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค.
์์ฑ์ ์ค๋ฒ๋ก๋ฉ์ด ๋ง์์ง ๊ฒฝ์ฐ ์์ฑ์ ๊ฐ์ ์ค๋ณต๋ ์ฝ๋๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ํ๋ ์ด๊ธฐํ ๋ด์ฉ์ ํ ์์ฑ์์๊ฒ๋ง ์ง์ค์ ์ผ๋ก ์์ฑํ๊ณ ๋๋จธ์ง ์์ฑ์๋ ์ด๊ธฐํ ๋ด์ฉ์ ๊ฐ์ง๊ณ ์๋ ์์ฑ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ํ ์ ์๋ค.
this()๋ ์์ ์ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ก ๋ฐ๋์ ์์ฑ์์ ์ฒซ ์ค์์๋ง ํ์ฉ๋๋ค. this() ๋ค์์๋ ์ถ๊ฐ์ ์ธ ์คํ๋ฌธ๋ค์ด ์ฌ ์ ์๋ค.
this() ๋ฉ์๋๋ ์์ฑ์ ๋ด๋ถ์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ฐ์ ํด๋์ค์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํฉ๋๋ค.
this() ๋ฉ์๋์ ์ธ์๋ฅผ ์ ๋ฌํ๋ฉด, ์์ฑ์ ์ค์์ ๋ฉ์๋ ์๊ทธ๋์ฒ(๋ฉ์๋ ์ด๋ฆ๊ณผ ๋งค๊ฐ๋ณ์ ๋ฆฌ์คํธ์ ์กฐํฉ)๊ฐ ์ผ์นํ๋ ๋ค๋ฅธ ์์ฑ์๋ฅผ ์ฐพ์ ํธ์ถํด ์ค๋๋ค.
์์ 1) ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํด์ ์ค๋ณต ์ฝ๋ ์ค์ด๊ธฐ
public class Car { //ํ๋ //์ ์กฐํ์ฌ String company = "ํ๋์๋์ฐจ"; //๋ชจ๋ธ String model; //= "๊ทธ๋์ "; //์ฐจ์ ์๊น String color; //= "๊ฒ์ "; //์ต๋ ์๋๊ฐ int maxSpeed; //= 350; //ํ์ฌ ์๋ int speed; //์์ ๋ค๋ฅด๊ฒ ์ด๊ธฐ๊ฐ์ด ์๋ค. //์์ฑ์ ์ ์ธ Car(){//๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์ - ๊ธฐ๋ณธ ์์ฑ์ } Car(String model){//๋งค๊ฐ ๋ณ์๊ฐ 1๊ฐ์ธ ์์ฑ์ //this.model = model; this(model,"์์",250); } Car(String model, String color){//๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ์ธ ์์ฑ์ - ๋งค๊ฐ ๋ณ์๋ ํ์
์ด ๊ฐ์(String, String) this.model = model; this.color = color; } Car(String model, int speed){//๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ์ธ ์์ฑ์ - ๋งค๊ฐ ๋ณ์๋ ํ์
์ด ๋ค๋ฆ(String, int) this.model = model; this.speed = speed; } Car(String model, String color, int maxSpeed){//๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ์ธ ์์ฑ์ this.model = model; this.color = color; this.maxSpeed = maxSpeed; } }
๋ง๋ฌด๋ฆฌ
6๊ฐ์ง ํค์๋๋ก ๋๋ด๋ ํต์ฌ ํฌ์ธํธ
1) ๊ธฐ๋ณธ ์์ฑ์: ํด๋์ค ์ ์ธ ์ ์ปดํ์ผ๋ฌ์ ์ํด ์๋์ผ๋ก ์ถ๊ฐ๋๋ ์์ฑ์์ด๋ค.
2) ์์ฑ์ ์ ์ธ: ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํธ์ถ๋๋ ์์ฑ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ ์ธํ ์ ์๋ค.
์์ฑ์๋ฅผ ์ ์ธํ๋ฉด ๊ธฐ๋ณธ ์์ฑ์๋ ์์ฑ๋์ง ์๋๋ค.
3) ๋งค๊ฐ ๋ณ์: ์์ฑ์ ํธ์ถ ์ ๊ฐ์ ์ ๋ฌ๋ฐ๊ธฐ ์ํด ์ ์ธ๋๋ ๋ณ์๋ฅผ ๋งํ๋ค.
4) ๊ฐ์ฒด ์ด๊ธฐํ: ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ค๋นํ๋ ๊ณผ์ ์ผ๋ก
ํ๋๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐํํ๊ฑฐ๋ ์์ฑ์ ๋ด๋ถ์์ ํ๋๊ฐ์ ์ด๊ธฐํํ ์ ์์ผ๋ฉฐ,
๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ด์ฉ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
5) ์ค๋ฒ๋ก๋ฉ: ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฌ๋ฆฌํ๋ ์์ฑ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ ๊ฒ์ ๋งํ๋ค.
6) this(): ๊ฐ์ฒด ์์ ์ ๋ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค.

6.4 ๋ฉ์๋ p. 247
๋ฉ์๋๋ ๊ฐ์ฒด์ ๋์์ ํด๋นํ๋ ์ค๊ดํธ {} ๋ธ๋ก์ด๋ค. ์ค๊ดํธ ๋ธ๋ก ์ด๋ฆ์ด ๋ฉ์๋ ์ด๋ฆ์ด๋ฉฐ, ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ค๊ดํธ ๋ธ๋ก์ ์๋ ๋ชจ๋ ์ฝ๋๋ค์ด ์ผ๊ด์ ์ผ๋ก ์คํ๋๋ค.
6.4.1 ๋ฉ์๋ ์ ์ธ
๋ฉ์๋ ์ ์ธ์ ์ ์ธ๋ถ์ ์คํ ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ฆฌํดํ์
๋ฉ์๋ ์ด๋ฆ ([๋งค๊ฐ๋ณ์์ ์ธ, ...]_{ ์คํํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณณ //๋ฉ์๋ ์คํ ๋ธ๋ก }
๋ฉ์๋ ์ ์ธ๋ถ (method signature): ๋ฆฌํด ํ์
, ๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ ๋ณ์ ์ ์ธ
- ๋ฆฌํด ํ์
: ๋ฉ์๋๊ฐ ๋ฆฌํดํ๋ ๊ฒฐ๊ณผ ํ์
ํ์
- ๋ฉ์๋ ์ด๋ฆ
- ๋งค๊ฐ๋ณ์์ ์ธ: ๋ฉ์๋๊ฐ ์คํํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ ์ํ ๋ณ์
๋ฉ์๋ ์คํ ๋ธ๋ก: ์คํํ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์์)
public class Calculator { //ํ๋ //์์ฑ์ //๋ฉ์๋ void powerOn() { System.out.println("์ ์์ ์ผญ๋๋ค."); } int plus(int x, int y) { int result = x + y; return result; } double divide(int x, int y) { double result = (double)x / (double)y; return result; } void powerOff() { System.out.println("์ ์์ ๋๋๋ค."); } }
1) ๋ฆฌํด ํ์
๋ฆฌํด ํ์
= ๋ฆฌํด๊ฐ์ ํ์
๋ฆฌํด๊ฐ = ๋ฉ์๋๋ฅผ ์คํํ ํ์ ๊ฒฐ๊ด๊ฐ
๋ฉ์๋์ ๋ฆฌํด๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋ฆฌํด ํ์
์ด ์ ์ธ๋ถ์ ๋ช
์๋์ด์ผ ํ๋ค.
๋ฆฌํด๊ฐ์ด ์๋๋ ์๋๋์ ๋ฐ๋ผ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ค.
powerOn(); // ๋ฆฌํด๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๋ณ์์ ์ ์ฅํ ๋ด์ฉ์ด ์๋ค. double result = divide(10, 20); //๋ฆฌํด๊ฐ์ ๋ฐ๊ธฐ ์ํด ๋ฆฌํด ํ์
์ธ double ํ์
์ผ๋ก ์ ์ธ๋์ด์ผ ํ๋ค. int result = divide(10, 20); //์ปดํ์ผ ์๋ฌ
๋ฆฌํด๊ฐ์ ๋ฐ๊ธฐ ์ํด ๋ฆฌํด ํ์
์ธ double ํ์
์ผ๋ก ์ ์ธ๋์ด์ผ ํ๋ค.
๋ง์ฝ result ๋ณ์๋ฅผ int ํ์
์ผ๋ก ์ ์ธํ๊ฒ ๋๋ฉด double ๊ฐ์ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๋ฆฌํด๊ฐ์ด ์ค์ํ์ง ์๊ณ ๋ฉ์๋ ์คํ์ด ์ค์ํ ๊ฒฝ์ฐ ๋ณ์๋ฅผ ์ ์ธํ์ง ์๊ณ ๋ฉ์๋๋ฅผ ํธ์ถํ ์๋ ์๋ค.
divide(10, 20);
2) ๋ฉ์๋ ์ด๋ฆ
- ์ซ์๋ก ์์ํ๋ฉด ์ ๋๊ณ , $, _๋ฅผ ์ ์ธํ ํน์ ๋ฌธ์ ์ฌ์ฉ X
- ๊ด๋ก์ ์ผ๋ก ๋ฉ์๋ ์ด๋ฆ์ ์๋ฌธ์๋ก ์์ฑํ๋ค.
- ์๋ก ๋ค๋ฅธ ๋จ์ด๊ฐ ํผํฉ๋ ์ด๋ฆ์ด๋ผ๋ฉด ๋ค์ด์ด ์ค๋ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์์ฑํ๋ค.
์ ์์ฑ๋ ๋ฉ์๋ ์ด๋ฆ์ ์์ (๋ฉ์๋๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ์ฝ๊ฒ ์ ์ ์๋ค. :))
void run(){...} void startEngine(){...} String getName(){...} int[] getScores(){...}
3) ๋งค๊ฐ ๋ณ์ ์ ์ธ p. 250
๋งค๊ฐ ๋ณ์๋ ๋ฉ์๋๊ฐ ์คํํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋งค๊ฐ ๋ณ์๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์๊ณ , ํ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋งค๊ฐ๊ฐ์ ๋ฐ๋์ ๋งค๊ฐ ๋ณ์์ ํ์
์ ๋ถํฉ๋๋ ๊ฐ์ด์ด์ผ ํ๋ค.
void: ๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋๋ ๋ฆฌํด ํ์
์ผ๋ก void๋ฅผ ๊ธฐ์ ํด์ผ ํ๋ค.
์์ ) ๋ฉ์๋ ์ ์ธ
public class Calculator { //ํ๋ //์์ฑ์ //๋ฉ์๋ void powerOn() { System.out.println("์ ์์ ์ผญ๋๋ค."); } int plus(int x, int y) { int result = x + y; return result; } double divide(int x, int y) { double result = (double)x / (double)y; return result; } void powerOff() { System.out.println("์ ์์ ๋๋๋ค."); } }
์์ ) ๋ฉ์๋ ํธ์ถ
public class CalculatorExample { public static void main(String[] args) { Calculator myCalc = new Calculator(); //Calculator ํด๋์ค์ powerOn ๋ฉ์๋ ํธ์ถ myCalc.powerOn(); //Calculator ํด๋์ค์ plus ๋ฉ์๋ ํธ์ถ int result1 = myCalc.plus(5, 6); System.out.println(result1); byte x = 10; byte y = 4; //Calculator ํด๋์ค์ divide ๋ฉ์๋ ํธ์ถ double result2 = myCalc.divide(x, y); System.out.print(result2); //Calculator ํด๋์ค์ powerOff ๋ฉ์๋ ํธ์ถ myCalc.powerOff(); } }
4) ๋งค๊ฐ ๋ณ์์ ๊ฐ์๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์ฐ
ex) ์ฌ๋ฌ ๊ฐ์ ์๋ฅผ ๋ชจ๋ ํฉ์ฐํ๋ ๋ฉ์๋๋ฅผ ์ ์ธ
ํด๊ฒฐ์ฑ
์ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฐฐ์ด ํ์
์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด๋ค.
int sum1(int[] values){} //sum1() ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋ฐฐ์ด์ ๋๊ฒจ์ค์ผ๋ก์จ ๋ฐฐ์ด์ ํญ๋ชฉ ๊ฐ๋ค์ ๋ชจ๋ ์ ๋ฌํ ์ ์๋ค. //๋ฐฐ์ด์ ํญ๋ชฉ ์๋ ํธ์ถํ ๋ ๊ฒฐ์ ๋๋ค. int[] values = {1, 2, 3}; int result = sum1(values); int result = sum1(new int[] {1, 2, 3, 4, 5});
๋งค๊ฐ ๋ณ์๋ฅผ ๋ฐฐ์ด ํ์
์ผ๋ก ์ ์ธํ๋ฉด ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ๋ฐฐ์ด์ ์์ฑํด์ผ ํ๋ ๋ถํธํ ์ ์ด ์๋ค.
๊ทธ๋์ ๋ฐฐ์ด์ ์์ฑํ์ง ์๊ณ ๊ฐ์ ๋ชฉ๋ก๋ง ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
sum2() ๋ฉ์๋์ ๋งค๊ฐ ๋ณ์๋ฅผ ...๋ฅผ ์ฌ์ฉํด์ ์ ์ธํ๊ฒ ๋๋ฉด ๋ฉ์๋ ํธ์ถ ์ ๋๊ฒจ์ค ๊ฐ์ ์์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ฐฐ์ด์ด ์์ฑ๋๊ณ ๋งค๊ฐ๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ค.
int sum2(int ... values){} //...๋ก ์ ์ธ๋ ๋งค๊ฐ ๋ณ์์ ๊ฐ์ ๋ฉ์๋ ํธ์ถ ์ ์ผํ๋ก ๋์ดํด์ฃผ๋ฉด ๋๋ค. int result = sum2(1, 2, 3); int result = sum2(1, 2, 3, 4, 5); //๋ค์๊ณผ ๊ฐ์ด ๋ฐฐ์ด์ ์ง์ ๋งค๊ฐ๊ฐ์ผ๋ก ์ฌ์ฉํด๋ ์ข๋ค. int[] values = {1, 2, 3}; int result = sum2(values); int result = sum2(new int[]{1, 2, 3, 4, 5});
์์ 1) ๋งค๊ฐ ๋ณ์์ ๊ฐ์๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์ฐ
๋ฉ์๋์ ์คํ๋ฌธ์ด ์์ ํ ์ผ์นํ๋ค. ์ ์ธ ๋ฐฉ๋ฒ๋ง ๋ค๋ฅผ ๋ฟ์ด์ง ๋งค๊ฐ ๋ณ์์ ํ์
์ด ๋ฐฐ์ด์ด๋ฏ๋ก ์ฒ๋ฆฌ ๋ด์ฉ์ด ๊ฐ๋ค.
public class Computer { //๋ฉ์๋ ์ ์ธ ์ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ฅผ ๋ชจ๋ฅผ ๋ //1. ๋งค๊ฐ ๋ณ์์ ๋ฐฐ์ด ์ ์ธ int sum1(int[] values) { int sum = 0; for(int i=0; i<values.length; i++) { sum += values[i]; } return sum; } //2. ... int sum2(int ... values) { int sum = 0; for(int i=0; i<values.length; i++) { sum += values[i]; } return sum; } }
์์ 2) ๋งค๊ฐ ๋ณ์์ ๊ฐ์๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์ฐ
public class ComputerExample { public static void main(String[] args) { Computer myCom = new Computer(); int[] values1 = {1, 2, 3}; int result1 = myCom.sum1(values1); System.out.println("result1: "+result1); int result2 = myCom.sum1(new int[] {1, 2, 3, 4, 5}); System.out.println("result2: "+result2); int result3 = myCom.sum2(1, 2, 3); System.out.println("result3: "+result3); int result4 = myCom.sum2(1, 2, 3, 4, 5); System.out.println("result4: "+result4); } }
6.4.2 ๋ฆฌํด(return)๋ฌธ p. 254
1) ๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋
return ๋ฆฌํด๊ฐ;
return๋ฌธ ์ดํ์ ์คํ๋ฌธ์ ๊ฒฐ์ฝ ์คํ๋์ง ์๋๋ค.
2) ๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋: void p. 255
๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋๋ ๋ฆฌํด ํ์
์ผ๋ก void๋ฅผ ์ฌ์ฉํ๋ค.
void๋ก ์ ์ธ๋ ๋ฉ์๋์์๋ return๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค. ๋ฆฌํด๊ฐ์ ์ง์ ํ๋ ๊ฒ์ด ์๋๋ผ
๋ฉ์๋ ์คํ์ ๊ฐ์ ๋ก ์ข
๋ฃ์ํค๋ ์ญํ ์ด๋ค.
return;
return (null): null๋ก returnํ๋ค.
submit์ ํ์ง ๋ชปํ๊ณ null์ ๋ฐํํ๋ค. ํด๋น return ์๋๋ฅผ ์ ๋ถ ์คํํ์ง ์๊ณ return ์ค์์ ํด๋์ค๋ฅผ ๋๋ด๋ฒ๋ฆฐ๋ค.
return true: submit ํ๊ธฐ ์ ์ ํจ์์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๊ณ ํต๊ณผ๊ฐ ๋๋ฉด true(=submit true)๋ก ๋ฆฌํดํ๋ค๋ ๋ป์ด๋ค.
return false: ๊ฐ์ด ๋ค์ด๊ฐ ์์ง ์์ผ๋ฉด submit์ ํ์ง ์๊ณ fasle๋ก ๋ฆฌํดํ๋ค๋ ๋ป(return null๊ณผ ์์ฃผ ์กฐ๊ธ ์ฐจ์ด๊ฐ ์๋ค.)์ด๋ค.
์ฐธ๊ณ : https://diaryofgreen.tistory.com/80
์์ 1) return๋ฌธ
public class Car { //ํ๋ int gas; //์์ฑ์ //๋ฉ์๋ void setGas(int gas) { this.gas = gas; //๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋๋ก ๋งค๊ฐ๊ฐ์ ๋ฐ์์ gas ํ๋๊ฐ์ ๋ณ๊ฒฝ } //๋ฆฌํด๊ฐ์ด boolean์ธ ๋ฉ์๋๋ก gasํ๋๊ฐ์ด 0์ด๋ฉด false๋ฅผ, 0์ด ์๋๋ฉด true๋ฅผ ๋ฆฌํด boolean isLeftGas() { if(gas == 0) { System.out.println("gas๊ฐ ์์ต๋๋ค."); return false; //false๋ฅผ ๋ฆฌํด } System.out.println("gas๊ฐ ์์ต๋๋ค."); return true; //true๋ฅผ ๋ฆฌํด } //๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋๋ก gas ํ๋๊ฐ์ด 0์ด๋ฉด return๋ฌธ์ผ๋ก ๋ฉ์๋๋ฅผ ๊ฐ์ ์ข
๋ฃ void run() { while(true) { if(gas > 0) { System.out.println("๋ฌ๋ฆฝ๋๋ค.(gas์๋:" + gas + ")"); gas -= 1; }else { System.out.println("๋ฉ์ถฅ๋๋ค.(gas์๋:" + gas + ")"); return; } } } }
์์ 2) return๋ฌธ
public class CarExample { public static void main(String[] args) { Car myCar = new Car(); //Car์ setGas ๋ฉ์๋ ํธ์ถ myCar.setGas(5); //isLeftGas๋ฉ์๋ ํธ์ถ boolean gasState = myCar.isLeftGas(); if(gasState){ System.out.println("์ถ๋ฐํฉ๋๋ค."); myCar.run(); //Car์ run() ๋ฉ์๋ ํธ์ถ } //Car์ isLeftGas() ๋ฉ์๋ ํธ์ถ if(myCar.isLeftGas()) { System.out.println("gas๋ฅผ ์ฃผ์
ํ ํ์๊ฐ ์์ต๋๋ค."); }else { System.out.println("gas๋ฅผ ์ฃผ์
ํ์ธ์."); } } }
๊ฒฐ๊ณผ)
gas๊ฐ ์์ต๋๋ค. ์ถ๋ฐํฉ๋๋ค. ๋ฌ๋ฆฝ๋๋ค.(gas์๋:5) ๋ฌ๋ฆฝ๋๋ค.(gas์๋:4) ๋ฌ๋ฆฝ๋๋ค.(gas์๋:3) ๋ฌ๋ฆฝ๋๋ค.(gas์๋:2) ๋ฌ๋ฆฝ๋๋ค.(gas์๋:1) ๋ฉ์ถฅ๋๋ค.(gas์๋:0) gas๊ฐ ์์ต๋๋ค. gas๋ฅผ ์ฃผ์
ํ์ธ์.
6.4.3 ๋ฉ์๋ ํธ์ถ p. 258
๋ฉ์๋๋ ํด๋์ค ๋ด, ์ธ๋ถ์ ํธ์ถ์ ์ํด ์คํ๋๋ค.
- ํด๋์ค ๋ด๋ถ: ๋จ์ํ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ํธ์ถ
- ํด๋์ค ์ธ๋ถ: ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค ์ฐธ์กฐ ๋ณ์๋ฅผ ์ด์ฉํด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. (๊ฐ์ฒด๊ฐ ์กด์ฌํด์ผ ๋ฉ์๋๋ ์กด์ฌํ๋ฏ๋ก)
//์ธ๋ถ void ์ธ๋ถ๋ฉ์๋(){ Car car = new Car(); car.run(); car.stop(); car.sound(); }
1) ๊ฐ์ฒด ๋ด๋ถ์์ ํธ์ถ
๋ฉ์๋๋ฅผ ์คํํ๋ ค๋ฉด '๋ฉ์๋ ์ด๋ฆ(๋งค๊ฐ๊ฐ, ...)' ํํ๋ก ํธ์ถํด์ผ ํ๋ค.
์์ ) ํด๋์ค ๋ด๋ถ์์ ๋ฉ์๋ ํธ์ถ
public class Calculator { //๋ฉ์๋ ์ ์ธ //๋ฆฌํดํ์
๋ฉ์๋๋ช
([ํ์
๋งค๊ฐ๋ณ์]) int plus(int x, int y) { int result = x + y; return result; } double avg(int x, int y) { double sum = plus(x, y);//plus๋ฉ์๋ ํธ์ถ double result = sum / 2; return result; } void execute() { double result = avg(7, 10);//avg๋ฉ์๋ ํธ์ถ println("์คํ๊ฒฐ๊ณผ: " + result);//println๋ฉ์๋ ํธ์ถ } void println(String message) { System.out.println(message); } }
์์ ) Calculator์ execute() ์คํ
public class CalculatorExample { public static void main(String[] args) { Calculator myCalc = new Calculator(); //Calculator ํด๋์ค์ powerOn ๋ฉ์๋ ํธ์ถ myCalc.powerOn(); //Calculator ํด๋์ค์ plus ๋ฉ์๋ ํธ์ถ int result1 = myCalc.plus(5, 6); System.out.println(result1); byte x = 10; byte y = 4; //Calculator ํด๋์ค์ divide ๋ฉ์๋ ํธ์ถ double result2 = myCalc.divide(x, y); System.out.print(result2); //Calculator ํด๋์ค์ powerOff ๋ฉ์๋ ํธ์ถ myCalc.powerOff(); } }
2) ๊ฐ์ฒด ์ธ๋ถ์์ ํธ์ถ
์ธ๋ถ ํด๋์ค์์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๋ฉด ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค.
๋ฉ์๋๋ ๊ฐ์ฒด์ ์์๋ ๋ฉค๋ฒ์ด๋ฏ๋ก ๊ฐ์ฒด๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ๋ฉ์๋๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํด๋์ค ์ฐธ์กฐ ๋ณ์ = new ํด๋์ค(๋งค๊ฐ๊ฐ, ...);
๋ํธ ์ฐ์ฐ์๋ ๊ฐ์ฒด ์ ๊ทผ ์ฐ์ฐ์๋ก ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํ๋๋ ๋ฉ์๋์ ์ ๊ทผํ ๋ ์ฌ์ฉ๋๋ค.
์ฐธ์กฐ๋ณ์.๋ฉ์๋(๋งค๊ฐ๊ฐ, ...); //๋ฆฌํด๊ฐ์ด ์๊ฑฐ๋, ์์ด๋ ๋ฆฌํด๊ฐ์ ๋ฐ์ง ์์ ๊ฒฝ์ฐ ํ์
๋ณ์ = ์ฐธ์กฐ๋ณ์.๋ฉ์๋(๋งค๊ฐ๊ฐ, ...); //๋ฆฌํด๊ฐ์ด ์๊ณ , ๋ฆฌํด๊ฐ์ ๋ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ
์์ 1) ํด๋์ค ์ธ๋ถ์์ ๋ฉ์๋ ํธ์ถ
public class Car2 { //ํ๋ int speed; //์์ฑ์ //๋ฉ์๋ int getSpeed() { return speed; } void keyTurnOn() { System.out.println("ํค๋ฅผ ๋๋ฆฝ๋๋ค."); } void run() { for(int i=0; i<=50; i+=10) { speed = i; System.out.println("๋ฌ๋ฆฝ๋๋ค.(์์: "+speed+"km/h)"); } } }
์์ 2) ํด๋์ค ์ธ๋ถ์์ ๋ฉ์๋ ํธ์ถ
public class Car2Example { public static void main(String[] args) { //๋ฉ์๋ ํธ์ถ Car2 myCar = new Car2(); myCar.keyTurnOn(); myCar.run(); int speed = myCar.getSpeed(); System.out.println("ํ์ฌ ์๋: "+speed+"km/h"); } }
๊ฒฐ๊ณผ)
ํค๋ฅผ ๋๋ฆฝ๋๋ค. ๋ฌ๋ฆฝ๋๋ค.(์์: 0km/h) ๋ฌ๋ฆฝ๋๋ค.(์์: 10km/h) ๋ฌ๋ฆฝ๋๋ค.(์์: 20km/h) ๋ฌ๋ฆฝ๋๋ค.(์์: 30km/h) ๋ฌ๋ฆฝ๋๋ค.(์์: 40km/h) ๋ฌ๋ฆฝ๋๋ค.(์์: 50km/h) ํ์ฌ ์๋: 50km/h
6.4.4 ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ (Overloading) p. 263
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ: ํด๋์ค ๋ด์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ ๊ฒ
์ค๋ฒ๋ก๋ฉ: ๋ง์ด ์ฃ๋ ๊ฒ
ํ๋์ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค.
์กฐ๊ฑด: ๋งค๊ฐ ๋ณ์์ ํ์
, ๊ฐ์, ์์ ์ค ํ๋๊ฐ ๋ฌ๋ผ์ผ ํ๋ค.
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ด ํ์ํ ์ด์ ๋ ๋งค๊ฐ๊ฐ์ ๋ค์ํ๊ฒ ๋ฐ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๊ธฐ ์ํด์์ด๋ค.
๋งค๊ฐ ๋ณ์ ํ์
์ด ์ผ์นํ์ง ์์ ๊ฒฝ์ฐ ์๋ ํ์
๋ณํ์ด ๊ฐ๋ฅํ์ง ๊ฒ์ฌํ๋ค.
๋งค๊ฐ ๋ณ์์ ํ์
, ๊ฐ์, ์์๊ฐ ๋๊ฐ์ ๊ฒฝ์ฐ ๋งค๊ฐ ๋ณ์ ์ด๋ฆ์ด ๋ค๋ฅด๋ค๊ณ ํด์ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ด๋ผ๊ณ ํ์ง ์๋๋ค.
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ System.out.println() ๋ฉ์๋์ด๋ค. ํธ์ถํ ๋ ์ฃผ์ด์ง ๋งค๊ฐ๊ฐ์ ํ์
์ ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ฒ๋ก๋ฉ๋ println() ๋ฉ์๋ ์ค ํ๋๋ฅผ ํธ์ถํ๋ค.
void println(){...} void println(boolean x){...} void println(char x){...} void println(char[] x){...} void println(double x){...} void println(float x){...} void println(long x){...} void println(Object x){...} void println(String x){...}
์์ 1) ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
์ด๋ค ๋ฉ์๋๊ฐ ํธ์ถ๋ ๊ฒ์ธ์ง๋ ๋งค๊ฐ๊ฐ์ ๋ณ์์ ๋ฌ๋ ค์๋ค.
public class Calculator { //์ ์ฌ๊ฐํ์ ๋์ด double areaRectangle(double width) { return width * width; } //์ง์ฌ๊ฐํ์ ๋์ด double areaRectangle(double width, double height) { return width * height; } //์์ ๋์ด double areaRectangle(int r) { return r * r * Math.PI; } }
์์ 2) ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ
public class CalculatorExample { public static void main(String[] args) { Calculator myCalcu = new Calculator(); //์ ์ฌ๊ฐํ์ ๋์ด ๊ตฌํ๊ธฐ double result1 = myCalcu.areaRectangle(10); //์ง์ฌ๊ฐํ์ ๋์ด ๊ตฌํ๊ธฐ double result2 = myCalcu.areaRectangle(10, 20); //์์ ๋์ด ๊ตฌํ๊ธฐ double result3 = myCalcu.areaRectangle(10); //๊ฒฐ๊ณผ ์ถ๋ ฅ System.out.println("์ ์ฌ๊ฐํ ๋์ด=" + result1); System.out.println("์ ์ฌ๊ฐํ ๋์ด=" + result2); System.out.println("์์ ๋์ด=" + result3); } }
๋ง๋ฌด๋ฆฌ p. 267
6๊ฐ์ง ํค์๋๋ก ๋๋ด๋ ํต์ฌ ํฌ์ธํธ
1) ์ ์ธ๋ถ: ๋ฉ์๋ ์ ์ธ๋ถ๋ ๋ฆฌํด ํ์
, ๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ ๋ณ์ ์ ์ธ ๋ถ๋ถ์ ๋งํ๋ค.
2) void: ๋ฆฌํด๊ฐ์ด ์๋ ๋ฉ์๋๋ ๋ฆฌํด ํ์
์ผ๋ก void๋ฅผ ๊ธฐ์ ํด์ผ ํ๋ค.
3) ๋งค๊ฐ ๋ณ์: ๋ฉ์๋ ํธ์ถ ์ ์ ๊ณต๋๋ ๋งค๊ฐ๊ฐ์ ๋ฉ์๋ ์ ์ธ๋ถ์ ๋งค๊ฐ ๋ณ์์ ์ฐจ๋ก๋๋ก ๋์
๋์ด, ๋ฉ์๋ ๋ธ๋ก ์คํ ์ ์ด์ฉ๋๋ค.
4) ๋ฆฌํด๋ฌธ: ๋ฉ์๋ ์ ์ธ๋ถ์ ๋ฆฌํด ํ์
์ด ์๋ค๋ฉด ๋ฆฌํด๊ฐ์ ์ง์ ํ๊ธฐ ์ํด return๋ฌธ์ด ๋ฐ๋์ ์์ด์ผ ํ๋ค. ๋ฆฌํด ํ์
์ด void๋ผ๋ฉด return๋ฌธ์ ํ์ ์์ง๋ง, ๋ฉ์๋ ์คํ ์ข
๋ฃ๋ฅผ ์ํด ์ฌ์ฉํ ์ ์๋ค.
5) ํธ์ถ: ๋ฉ์๋๋ฅผ ์คํํ๋ ค๋ฉด '๋ฉ์๋ ์ด๋ฆ(๋งค๊ฐ๊ฐ, ...)' ํํ๋ก ํธ์ถํด์ผ ํ๋ค.
6) ์ค๋ฒ๋ก๋ฉ: ํด๋์ค ๋ด์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ ๊ฒ
์กฐ๊ฑด์ ๋งค๊ฐ ๋ณ์์ ํ์
, ๊ฐ์, ์์ ์ค ํ๋๊ฐ ๋ฌ๋ผ์ผ ํ๋ค.
Q3
์์ ) MemberService.java
public class MemberService { //์์ฑ //MemberService ํด๋์ค //login ๋ฉ์๋ ์ ์ธ //id, password ์ ๊ณต boolean login(String id, String password) { //id = "hong", password = "12345" true ๋ฆฌํด if(id.equals("hong")&&password.equals("12345")) { return true; }else { //๊ทธ ์ธ false ๋ฆฌํด return false; } } //logout ๋ฉ์๋ ์ ์ธ //id ์ ๊ณต void logout(String id) {//"๋ก๊ทธ์์ ๋์์ต๋๋ค." ์ถ๋ ฅ System.out.println("๋ก๊ทธ์์ ๋์์ต๋๋ค."); } }
์์ ) MemberServiceExample.java
public class MemberServiceExample { public static void main(String[] args) { MemberService memberService = new MemberService(); boolean result = memberService.login("hong", "12345"); if(result) { System.out.println("๋ก๊ทธ์ธ ๋์์ต๋๋ค."); memberService.logout("hong"); }else { System.out.println("id ๋๋ password๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค."); } } }
๊ฒฐ๊ณผ)
๋ก๊ทธ์ธ ๋์์ต๋๋ค. ๋ก๊ทธ์์ ๋์์ต๋๋ค.
Q4)
์์ ) Printer.java
public class Printer { //์์ฑ ์์น static void println(int value) { System.out.println(value); } static void println(boolean value) { System.out.println(value); } static void println(double value) { System.out.println(value); } static void println(String value) { System.out.println(value); } }
์์ ) PrinterExample.java
public class PrinterExample { public static void main(String[] args) { Printer printer = new Printer(); printer.println(10); printer.println(true); printer.println(5.7); printer.println("ํ๊ธธ๋"); } }
๊ฒฐ๊ณผ)
10 true 5.7 ํ๊ธธ๋