์๋
! Java์ ์ค์ฒฉ ํด๋์ค์ ๋ํ ์ฃผ์ ๋ฅผ ๊ณ์ ํ์ํฉ๋๋ค. ์ง๋ ์ฐ์ต์์๋ ๋ด๋ถ ํด๋์ค๋ผ๊ณ ๋ ํ๋ ๋น์ ์ ์ค์ฒฉ ํด๋์ค์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค.
์ค๋์ ๋ค๋ฅธ ํด๋์ค ๊ทธ๋ฃน์ผ๋ก ์ด๋ํฉ๋๋ค. ์ ์ ์ค์ฒฉ ํด๋์ค๋ฅผ ๊ณ ๋ คํ ๊ฒ์
๋๋ค.
๋ค๋ฅธ ํด๋์ค์ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ์? ์ด๋ฌํ ์ข
๋ฅ์ ํด๋์ค๋ฅผ ์ ์ธํ ๋ ์ด๋ฏธ ์ต์ํ static ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
![์ ์ ์ค์ฒฉ ํด๋์ค - 4]()
์ง๋ ์์
์์ ๋งํ๋ฏ์ด ์ด๋ฌํ ์ค์ฒฉ ํด๋์ค๋ฅผ ๋ง๋ค๋ฉด ์บก์ํ๊ฐ ํฅ์๋๊ณ ๋ณด๋ค ํ์ค์ ์ธ ์ถ์ํ์ ๊ธฐ์ฌํฉ๋๋ค. ์ ์ ๋ฐ ๋น์ ์ ์ค์ฒฉ ํด๋์ค์ ์ฐจ์ด์ ์ ๋ฌด์์
๋๊น? 1. ์ ์


public class Boeing737 {
private int manufactureYear;
private static int maxPassengersCount = 300;
public Boeing737(int manufactureYear) {
this.manufactureYear = manufactureYear;
}
public int getManufactureYear() {
return manufactureYear;
}
public static class Drawing {
public static int getMaxPassengersCount() {
return maxPassengersCount;
}
}
}

Boeing737
์ด ์์๋ ์ด ์ ํ์ ๋นํ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ธ๋ถ ํด๋์ค๊ฐ ์์ต๋๋ค . ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ธ ์์ฑ์๊ฐ ์์ต๋๋ค: ์ ์กฐ ์ฐ๋( int manufactureYear
). ์ต๋ ์น๊ฐ ์( )๋ผ๋ ํ๋์ ์ ์ ๋ณ์๋ ์์ต๋๋ค int maxPassengersCount
. ๋์ผํ ๋ชจ๋ธ์ ๋ชจ๋ ํ๋ฉด์ ๋ํด ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ฏ๋ก ํ๋์ ์ธ์คํด์ค๋ง ํ์ํฉ๋๋ค. Drawing
๋ํ ์ ์ ์ค์ฒฉ ํด๋์ค (๋นํ๊ธฐ์ ์์ง๋์ด๋ง ์ฒญ์ฌ์ง์ ๋ํ๋)๊ฐ ์์ต๋๋ค . ์ฐ๋ฆฌ๋ ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ํญ๊ณต๊ธฐ์ ๋ํ ๋ชจ๋ ๊ณต์ ์ ๋ณด๋ฅผ ์บก์ํํฉ๋๋ค. ์ด ์์ ์์๋ ๋จ์ํ๋ฅผ ์ํด ์ด ํด๋์ค๋ฅผ ์ ์กฐ ์ฐ๋๋ก ์ ํํ์ง๋ง ๋ค๋ฅธ ๋ง์ ์ ๋ณด๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. 
Drawing
ํด๋์ค์ ๊ฐ์ฒด๋ ์ธ๋ถ ํด๋์ค์ ํน์ ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค. ์ง๋ ์์
์ ์์ ๊ฑฐ ์๋ฅผ ๊ธฐ์ตํ์ญ์์ค.
public class Bicycle {
private String model;
private int maxWeight;
public Bicycle(String model, int maxWeight) {
this.model = model;
this.maxWeight = maxWeight;
}
public void start() {
System.out.println("Let's go!");
}
public class Handlebar {
public void right() {
System.out.println("Steer right!");
}
public void left() {
System.out.println("Steer left!");
}
}
}
Handlebar
๊ทธ ์์
์์ ์ฐ๋ฆฌ๋ ๋ด๋ถ ํด๋์ค์ ๊ฐ ์ธ์คํด์ค๊ฐ ๋์ ๋์ง ์๊ฒ ์ธ๋ถ ํด๋์ค์ ์ธ์คํด์ค์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๋ฌํ๋ค๋ ์ฌ์ค์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค Bicycle
. ์ธ๋ถ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์์ผ๋ฉด ๋ด๋ถ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ์ ์ ์ค์ฒฉ ํด๋์ค์ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ์ ์ ๋ดํฌ ํด๋์ค์ ๊ฐ์ฒด๋ ์ ์ ์ผ๋ก ์์ฒด์ ์ผ๋ก ์กด์ฌํ ์ ์์ต๋๋ค. ์ด์ ๊ด๋ จํ์ฌ ์ ์ ํด๋์ค๋ ๋น์ ์ ํด๋์ค๋ณด๋ค "๋
๋ฆฝ์ "์
๋๋ค. ์์์ผ ํ ์ ์ผํ ๊ฒ์ ์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ธ๋ถ ํด๋์ค์ ์ด๋ฆ์ ์ง์ ํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค.
public class Main {
public static void main(String[] args) {
Boeing737.Drawing drawing1 = new Boeing737.Drawing();
Boeing737.Drawing drawing2 = new Boeing737.Drawing();
}
}
Drawing
์ง๋ ์์
์์ ํด๋์ค๋ฅผ ์ ์ ์ผ๋ก ๋ง๋ ์ด์ ๋ ๋ฌด์์
๋๊น?Seat
ํด๋์ค(์์ ๊ฑฐ ์ข์์ ๋ํ๋) ๋น์ ์ ? ์ง๋๋ฒ๊ณผ ๊ฐ์ด ์๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ฝ๊ฐ์ "์ฒ ํ"์ ์ถ๊ฐํด ๋ด
์๋ค :) ์์ ๊ฑฐ ์ข์๊ณผ ๋ฌ๋ฆฌ ์์ง๋์ด๋ง ๋๋ฉด์ ๊ฐ๋
์ ํญ๊ณต๊ธฐ์ ๊ฐ๋
๊ณผ ์๊ฒฉํ๊ฒ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค. ์์ ๊ฑฐ๊ฐ ์์ผ๋ฉด ๋ณ๋์ ์์ ๊ฑฐ ์ข์ ์ค๋ธ์ ํธ๋ ์๋ฏธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค(ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋์ง๋ง ์ง๋ ๋จ์์์ ์ด์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค). ์์ง๋์ด๋ง ๋๋ฉด์ ๊ฐ๋
์ ๊ทธ ์์ฒด๋ก ์๋ฏธ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋นํ๊ธฐ ์ ๋น๋ฅผ ๊ณํํ๋ ์์ง๋์ด์๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค. ๋นํ๊ธฐ๋ ๊ณํ์ ์ธ์ฐ๋ ๋ฐ ํ์ํ์ง ์์ผ๋ฉฐ ์ด๋์๋ ์์ ์ ์์ต๋๋ค. ์์ง๋์ด๋ง ๋๋ฉด ๋ง ํ์ํฉ๋๋ค. ๋ํ ๋์ผํ ๋ชจ๋ธ์ ๋ชจ๋ ํญ๊ณต๊ธฐ๋ ๋์ผํ ์์ง๋์ด ๋๋ฉด์ ๊ฐ์ง๋ฏ๋ก ์์ ๊ฑฐ ์ข์๊ณผ ๊ฐ์ ๊ธด๋ฐํ ๊ด๊ณ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์,Drawing
๊ฐ์ฒด๋ ํน์ ๋นํ๊ธฐ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ํ์ํ์ง ์์ต๋๋ค. 2. ์ธ๋ถ ํด๋์ค์ ๋ณ์ ๋ฐ ๋ฉ์๋์ ๋ํ ๋ค๋ฅธ ์ก์ธ์ค. ์ ์ ์ค์ฒฉ ํด๋์ค๋ ์ธ๋ถ ํด๋์ค์ ์ ์ ํ๋์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด ์์์ ํด๋์ค์๋ ์ธ๋ถ ํด๋์ค์ ์ ์ ๋ณ์ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๊ฐ Drawing
์์ต๋๋ค . ๊ทธ๋ฌ๋ ์ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ํด๋์ค์ ๋ง๋ค ์๋ ์์ต๋๋ค . ๊ฒฐ๊ตญ ๋ณ์๋ ๋น์ ์ ์ด๋ฏ๋ก ์ ํน์ ์ธ์คํด์ค์ ์ํด์ผ ํฉ๋๋ค . ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ฐ๊ฒฌํ ๊ฒ์ฒ๋ผ ์ ์ ๋ดํฌ ํด๋์ค์ ๊ฒฝ์ฐ ์ธ๋ถ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ฝ๊ฒ ๋๋ฝ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ํ์ด ์์ต๋๋ค :) ์ ์ ๋ณ์๊ฐ ์ธ๋ถ ํด๋์ค์ ์ด๋ค ์ก์ธ์ค ์์ ์๋ฅผ ๊ฐ์ง๋์ง๋ ์ค์ํ์ง ์์ต๋๋ค. ๊ทธ๋ ๋ค ํด๋getMaxPassengersCount()
maxPassengersCount
getManufactureYear()
Drawing
manufactureYear
manufactureYear
Boeing737
private
, ์ ์ ์ค์ฒฉ ํด๋์ค๋ ๊ณ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์์ ๋ชจ๋ ๋ด์ฉ์ ์ ์ ๋ณ์์ ๋ํ ์ก์ธ์ค๋ฟ๋ง ์๋๋ผ ์ ์ ๋ฉ์๋์๋ ์ ์ฉ๋ฉ๋๋ค. ์ค์ํ! ๋ด๋ถ ํด๋์ค ์ ์ธ์์ static
ํค์๋๋ ํ๋์ ๊ฐ์ฒด๋ง ๋ง๋ค ์ ์๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค. ๊ฐ์ฒด์ ๋ณ์๋ฅผ ํผ๋ํ์ง ๋ง์ญ์์ค. ์ ์ ๋ณ์์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๋ฉด ์, ์ ์ ํด๋์ค ๋ณ์์ ๋จ์ผ ์ธ์คํด์ค๊ฐ ์กด์ฌํฉ๋๋ค(์: maxPassangersCount
. ๊ทธ๋ฌ๋ static
๊ฐ ์ค์ฒฉ ํด๋์ค์ ์ ์ฉ๋๋ฉด ํด๋น ๊ฐ์ฒด๊ฐ ์ธ๋ถ ํด๋์ค์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํ์ง ์๋๋ค๋ ์๋ฏธ์ผ ๋ฟ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ํ๋ ๋งํผ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
public class Boeing737 {
private int manufactureYear;
private static int maxPassengersCount = 300;
public Boeing737(int manufactureYear) {
this.manufactureYear = manufactureYear;
}
public int getManufactureYear() {
return manufactureYear;
}
public static class Drawing {
private int id;
public Drawing(int id) {
this.id = id;
}
public static int getPassengersCount() {
return maxPassengersCount;
}
@Override
public String toString() {
return "Drawing{" +
"id=" + id +
'}';
}
public static void main(String[] args) {
for (int i = 1; i < 6; i++) {
Boeing737.Drawing drawing = new Boeing737.Drawing(i);
System.out.println(drawing);
}
}
}
}
์ฐ๋ฆฌ๋ main()
์ค์ฒฉ๋ ํด๋์ค์์ ์ง์ ๋ฉ์๋๋ฅผ ์ ์ธํ๊ณ (์ด์ ๋ํ ํน๋ณํ ์ด์ ๋ ์์ต๋๋ค. ๋จ์ง ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ ค๋๋ฆฌ๊ธฐ ์ํ ๊ฒ์
๋๋ค), 5๊ฐ์ Drawing
๊ฐ์ฒด๋ฅผ ์์ฑํ์ต๋๋ค. ์ธ๋ถ ํด๋์ค์ ๋จ์ผ ๊ฐ์ฒด๊ฐ ์๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ . ๋ณด์๋ค์ํผ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค :) ์ฝ์ ์ถ๋ ฅ:
Drawing{id=1}
Drawing{id=2}
Drawing{id=3}
Drawing{id=4}
Drawing{id=5}
์ด๊ฒ์ผ๋ก ์์
์ ๋ง์นฉ๋๋ค! ๋ง์ผ์ ๋๋นํ์ฌ Oracle ์ค๋ช
์์์ ๊ด๋ จ ์น์
์ ๋ํ ๋งํฌ๋ฅผ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค . ์ฌ์ ํ ๋ถ๋ถ๋ช
ํ ๊ฒ์ด ์์ผ๋ฉด ์ฝ์ผ์ญ์์ค. ์ด์ ๋ช ๊ฐ์ง ์์
์ ํด๊ฒฐํ ์๊ฐ์
๋๋ค! :)
GO TO FULL VERSION