5. ํด๋์ค์ ๊ฐ์ฒด1
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํด๋์ค
๊ฐ์ฒด(object): ๋์ ๋ณด์ด๋ ์ฌ๋ฌผ ํน์ ๋์ ๋ณด์ด์ง ์๋ ๊ฒ
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming; OOP): ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ณ ๊ฐ์ฒด ๊ฐ ํ๋ ฅ์ ํ๋ก๊ทธ๋๋ฐ ํ๋ ๊ฒ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํจ
- ํด๋์ค(class) = ๊ฐ์ฒด์ ์์ฑ + ๊ธฐ๋ฅ
- ํด๋์ค ์ด๋ฆ์ ๋ณดํต ๋๋ฌธ์๋ก ์์ํจ
(์ ๊ทผ ์ ์ด์) class ํด๋์ค ์ด๋ฆ{
๋ฉค๋ฒ ๋ณ์; // ํด๋์ค์ ์์ฑ
๋ฉ์๋;
}
ex) ํ์ ํด๋์ค ์ ์ํ๊ธฐ
package classpart;
public class Student {
int studentID; // ํ๋ฒ
String studentName; // ํ์ ์ด๋ฆ
int grade; // ํ๋
String address; // ์ฌ๋ ๊ณณ
}
ํด๋์ค ์ดํด๋ณด๊ธฐ
๋ฉค๋ฒ ๋ณ์(member variable): ํด๋์ค์์ ๊ฐ์ฒด ์์ฑ์ ๋ํ๋ด๋ ๋ณ์(=์์ฑ, ํน์ฑ)
- ๋ฉค๋ฒ ๋ณ์๋ ์์ฑ์ด ๋ฌด์์ธ์ง์ ๋ฐ๋ผ ์๋ง์ ์๋ฃํ ์ ์ธํด์ฃผ์ด์ผ ํจ
- ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ ์ธํ ๋ ๊ธฐ๋ณธ ์๋ฃํ์ผ๋ก ์ ์ธํ ์๋ ์๊ณ , ๋ ๋ค๋ฅธ ํด๋์คํ์ธ ๊ฐ์ฒด ์๋ฃํ ๋๋ ์ฐธ์กฐ ์๋ฃํ์ผ๋ก ์ ์ธํ ์ ์์
- ๊ธฐ๋ณธ ์๋ฃํ: int, long, float, double ๋ฑ
- ์ฐธ์กฐ ์๋ฃํ: String, Date, Student ๋ฑ
- ์ฐธ์กฐ ์๋ฃํ์ JDK์์ ์ ๊ณตํ๋ ๊ฒ์ผ ์๋ ์๊ณ , ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ ํด๋์ค์ผ ์ ์์
๋ฉค๋ฒ ํจ์(member function) ํน์ ๋ฉ์๋(method): ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ฌ์ฉํด ํด๋์ค ๊ธฐ๋ฅ์ ๊ตฌํํ ๊ฒ
ex) ํ์ ์ด๋ฆ๊ณผ ์ฃผ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฉ์๋ ๋ง๋ค๊ธฐ
package classpart;
public class Student {
int studentID; // ํ๋ฒ
String studentName; // ํ์ ์ด๋ฆ
int grade; // ํ๋
String address; // ์ฌ๋ ๊ณณ
public void showStudentInfo() {
System.out.println(studentName + "," + address); // ์ด๋ฆ, ์ฃผ์ ์ถ๋ ฅ
}
}
ํจํค์ง(package): ํด๋์ค ํ์ผ์ ๋ฌถ์
- ํจํค์ง๋ฅผ ๋ง๋ค๋ฉด ํ๋ก์ ํธ ํ์์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋ ํฐ๋ฆฌ ์์ฑ๋จ
- ํจํค์ง๋ ๊ณ์ธต ๊ตฌ์กฐ ๊ฐ์ง ์ ์์
๋ฉ์๋(Method)
๋ฉ์๋๋ ํจ์(function)์ ํ ์ข ๋ฅ๋ก, ํจ์๋ 'ํ๋์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ผ๋ จ์ ์ฝ๋'๋ฅผ ์๋ฏธํ๋ค. ํจ์๋ ์ด๋ฆ์ด ์๊ณ ์ ๋ ฅ ๊ฐ๊ณผ ๊ฒฐ๊ณผ ๊ฐ์ ๊ฐ๋๋ค.

- ํจ์ ์ด๋ฆ: ๋ณ์ ์ด๋ฆ์ฒ๋ผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์๋ก ๋ง๋๋ ๊ฒ์ผ๋ก, ํจ์ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ ์๊ฒ ๋ง๋ค์ด์ผ ๋์ค์ ํธ์ถํ๊ฑฐ๋ ์ดํดํ๊ธฐ ์ฌ์
- ๋งค๊ฐ๋ณ์: ํจ์ ๋ด๋ถ์์ ์ฌ์ฉํ ๊ดํธ ์์ ๋ณ์๋ก, ๋งค๊ฐ๋ณ์๊ฐ ํ์ ์๋ ํจ์๋ ์กด์ฌํจ
- return ์์ฝ์ด์ ๋ฐํํ: ํจ์๋ฅผ ์ํํ ํ ๋ฐํํ ๊ฐ, ํจ์ ๋ฐํํ์ void๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋น์ด ์๋ค๋ ์๋ฏธ๋ก '๋ฐํํ ๊ฐ์ด ์๋ค'๋ ๋ป์ ์์ฝ์ด์
ํจ์ ๊ตฌํํ๊ณ ํธ์ถํ๊ธฐ
package classpart;
public class FunctionTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int sum = add(num1, num2);
System.out.println(num1 + "+" + num2 + "=" + sum + "์
๋๋ค");
}
// add() ํจ์
public static int add(int n1, int n2) {
int result = n1 + n2;
return result;
}
}
ํจ์ ํธ์ถ๊ณผ ์คํ ๋ฉ๋ชจ๋ฆฌ
ํจ์๋ฅผ ํธ์ถํ๋ฉด ๊ทธ ํจ์๋ง์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ ๋น๋จ
์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์คํ(stack)์ด๋ผ๊ณ ๋ถ๋ฆ
- ํ๋ก๊ทธ๋จ์์ ์ฌ๋ฌ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ํจ์๋ฅผ ํธ์ถํ ์์๋๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ง๋ค์ด์ง๊ณ ๋งจ ๋ง์ง๋ง์ ํธ์ถํ ํจ์๋ถํฐ ๋ฐํ๋จ
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ๋งจ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ๊ฒ๋ถํฐ ์คํ์์ ์ฌ๋ผ์ง
- ์ฆ, A() → B() → C() ํจ์์ ์์๋ก ํธ์ถํ๋ค๋ฉด C() → B() → A() ์์๋ก ๋ฐํ๋๊ณ ์คํ ๋ฉ๋ชจ๋ฆฌ๋ ์ด ์์๋๋ก ์๋ฉธ๋จ


- main() ํจ์์์ ์ฌ์ฉํ๋ num1, num2 ๋ณ์์ add() ํจ์์์ ์ฌ์ฉํ๋ n1, n2 ๋ณ์๋ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฏ๋ก ์ด๋ฆ์ด ๊ฐ๋ ๋ค๋ฅด๋ ์๊ด ์์
- ํจ์ ๋ด๋ถ์์๋ง ์ฌ์ฉํ๋ ๋ณ์ = ์ง์ญ ๋ณ์, ์ง์ญ ๋ณ์๋ ์คํ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋จ
ํจ์์ ์ฅ์
- ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ฅ์ ๋๋์ด ์ฝ๋๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ
- ๊ธฐ๋ฅ๋ณ๋ก ํจ์๋ฅผ ๊ตฌํํด ๋์ผ๋ฉด ๊ฐ์ ๊ธฐ๋ฅ์ ๋งค๋ฒ ์ฝ๋๋ก ๋ง๋ค์ง ์์๋ ๋จ
- ์ค๋ณต ์ฝ๋ ๋ฐฉ์ง
- ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ์๊ธด ์ค๋ฅ๋ฅผ ์์ ํ๋ ๋๋ฒ๊น ์์ ํธ์ → ํ๋์ ๊ธฐ๋ฅ์ด ํ๋์ ํจ์๋ก ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ ๊ธฐ๋ฅ๋ง ์ฐพ์์ ์์ ํ๋ฉด ๋จ
ํด๋์ค ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฉ์๋
๋ฉ์๋: ์๋ฐ ํ๋ก๊ทธ๋จ์์ ํด๋์ค ๋ด๋ถ์์ ์ฌ์ฉํ๋ ๋ฉค๋ฒ ํจ์๋ก, ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ฌ์ฉํด ํด๋์ค์ ๊ธฐ๋ฅ ๊ตฌํ
package classpart;
public class Student {
int studentID; // ํ๋ฒ
String studentName; // ํ์ ์ด๋ฆ
int grade; // ํ๋
String address; // ์ฌ๋ ๊ณณ
// ํ์์ ์ด๋ฆ์ ๋ฐํํ๋ ๋ฉ์๋
public String getStudentName() {
return studentName;
}
}
- ๋ฉ์๋ ์ด๋ฆ์ ํด๋น ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ ์ ์ฅ์์ ์ง๋ ๊ฒ์ด ์ข์
์๋ฐ์ ์ด๋ฆ ์ง๊ธฐ ๊ท์ฝ
- ํด๋์ค ์ด๋ฆ์ ๋๋ฌธ์๋ก ์์
- ํ๋์ ์๋ฐ ํ์ผ์ ํด๋์ค๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์ ์์ง๋ง, public ํด๋์ค๋ ๋จ ํ๋์ด๊ณ public ํด๋์ค ์ด๋ฆ = ์๋ฐ ํ์ผ ์ด๋ฆ
- ํจํค์ง ์ด๋ฆ์ ๋ชจ๋ ์๋ฌธ์๋ก ๋ง๋ฆ
- ๋ณ์์ ๋ฉ์๋ ์ด๋ฆ์ ์๋ฌธ์๋ก ์์ํ๋ฉฐ, ์ด๋ฆ์ด ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ์๋ ์ค๊ฐ์ ์ ๋จ์ด๋ก ๋ฐ๋ ๋๋ง๋ค ๋๋ฌธ์๋ฅผ ์จ์ค = ๋ํ(camel) ํ๊ธฐ๋ฒ
ํด๋์ค์ ์ธ์คํด์ค
main() ํจ์๋ ์๋ฐ ๊ฐ์ ๋จธ์ (JVM)์ด ํ๋ก๊ทธ๋จ์ ์์ํ๊ธฐ ์ํด ํธ์ถํ๋ ํจ์๋ก, ํด๋์ค ๋ด๋ถ์ ๋ง๋ค์ง๋ง ํด๋์ค์ ๋ฉ์๋๋ ์๋
main() ํจ์์์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ๋ง๋ ํด๋์ค ๋ด๋ถ์ main() ํจ์๋ฅผ ๋ง๋๋ ๊ฒ
package classpart;
public class Student {
int studentID; // ํ๋ฒ
String studentName; // ํ์ ์ด๋ฆ
int grade; // ํ๋
String address; // ์ฌ๋ ๊ณณ
// ํ์์ ์ด๋ฆ์ ๋ฐํํ๋ ๋ฉ์๋
public String getStudentName() {
return studentName;
}
public static void main(String[] args) {
Student studentHong = new Student(); // Student ํด๋์ค ์์ฑ
studentHong.studentName = "ํ๊ธธ๋";
System.out.println(studentHong.studentName);
System.out.println(studentHong.getStudentName());
}
}
- ์ธ๋ถ์ ํ
์คํธ์ฉ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ
- ์๋ ์ฝ๋์์ ํ์ฌ ๋ ํด๋์ค๊ฐ ๊ฐ์ ํจํค์ง์ ์๊ธฐ ๋๋ฌธ์ ํจํค์ง ์ด๋ฆ์ด classpart๋ก ๋์ผํจ
- ํจํค์ง๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ import๋ฌธ์ ์ฌ์ฉํด์ ํจ๊ป ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ๋ ํด๋์ค๋ฅผ ๋ถ๋ฌ์์ผ ํจ
package classpart;
public class StudentTest {
public static void main(String[] args) {
Student studentHong = new Student(); // Student ํด๋์ค ์์ฑ
studentHong.studentName = "ํ๊ธธ๋";
System.out.println(studentHong.studentName);
System.out.println(studentHong.getStudentName());
}
}
new ์์ฝ์ด๋ก ํด๋์ค ์์ฑํ๊ธฐ
ํด๋์คํ ๋ณ์์ด๋ฆ = new ์์ฑ์;
- ํด๋์ค๋ฅผ ์์ฑํ ๋๋ new ์์ฝ์ด ์ฌ์ฉํด ์์ฑ์๋ฅผ ํธ์ถํด ๋์ ํ๋ฉด ์๋ก์ด ํด๋์ค๊ฐ ์์ฑ๋จ
- ํด๋์ค๊ฐ ์์ฑ๋๋ค๋ ๊ฒ์ ํด๋์ค๋ฅผ ์ค์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(ํ ๋ฉ๋ชจ๋ฆฌ)์ ํ ๋น ๋ฐ๋๋ค๋ ๋ป
- ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์์ฑ๋ ํด๋์ค = ์ธ์คํด์ค
- ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ํด๋์คํ ๋ณ์ = ์ฐธ์กฐ ๋ณ์
์ธ์คํด์ค์ ์ฐธ์กฐ ๋ณ์
๊ฐ์ฒด: '์์ฌ๋ ํ์๊ฐ ๋ฏธ์น๋ ๋์'
ํด๋์ค: ๊ฐ์ฒด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ ๊ฒ
์ธ์คํด์ค: ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ฑ๋ ์ํ

- ํด๋์ค๋ ํ๋์ด์ง๋ง, ์ด ํด๋์ค๋ก๋ถํฐ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์์ฑ ๊ฐ๋ฅ
package classpart;
public class StudentTest {
public static void main(String[] args) {
Student student1 = new Student(); // ์ฒซ ๋ฒ์งธ ํ์ ์์ฑ
student1.studentName = "ํ๊ธธ๋";
System.out.println(student1.getStudentName());
Student student2 = new Student(); // ๋ฒ์งธ ํ์ ์์ฑ
student2.studentName = "๊น์ฒ ์";
System.out.println(student2.getStudentName());
}
}
- ์ฐธ์กฐ ๋ณ์๋ฅผ ์ฌ์ฉํด ์ธ์คํด์ค์ ๋ฉค๋ฒ ๋ณ์์ ๋ฉ์๋ ์ฐธ์กฐํด ์ฌ์ฉ ๊ฐ๋ฅ → ๋ํธ(.) ์ฐ์ฐ์ ์ฌ์ฉ
์ฐธ์กฐ๋ณ์.๋ฉค๋ฒ๋ณ์
์ฐธ์กฐ๋ณ์.๋ฉ์๋
์ธ์คํด์ค์ ํ ๋ฉ๋ชจ๋ฆฌ
ํ ๋ฉ๋ชจ๋ฆฌ(heap memory): ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋ ๊ฐ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก, ํด๋์ค ์์ฑ์๋ฅผ ํ๋ ํธ์ถํ๋ฉด ์ธ์คํด์ค๊ฐ ํ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋จ
ํ(heap): ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ(dynamic memory) ๊ณต๊ฐ์ผ๋ก,
ํ๋ก๊ทธ๋จ์ ์คํ, ํ, ๋ฐ์ดํฐ ์ธ ์์ญ์ ์ฌ์ฉํ๋๋ฐ, ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์ฌ์ฉํ๋ ๊ณต๊ฐ์ด ํ์
- ํ์ ๋์ ์ผ๋ก ํ ๋น๋๋ฉฐ ์ฌ์ฉ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ํด์ ํด ์ฃผ์ด์ผ ํจ
- C/C++ ์ธ์ด๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ผ ํ์ง๋ง, ์๋ฐ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํด์ ํด์ค
- ์ธ์คํด์ค๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐ๋ณ์๊ฐ ๊ฐ๋ฆฌํด
Studnet studentHong = new Student();

- ํด๋์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ์ธ์คํด์ค๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํจ
- ์ฐธ์กฐ ๋ณ์๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํด. ์ฆ ํ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ์ฐธ์กฐ ๋ณ์์ ์ ์ฅ๋จ
๋ฐ๋ผ์, ์ถ๋ ฅ ๋ด์ฉ ํ์ธํด๋ณด๋ฉด 'ํด๋์ค์ด๋ฆ@์ฃผ์๊ฐ'์ด ๋์ด
package classpart;
public class StudentTest {
public static void main(String[] args) {
Student student1 = new Student(); // ์ฒซ ๋ฒ์งธ ํ์ ์์ฑ
student1.studentName = "ํ๊ธธ๋";
System.out.println(student1.getStudentName());
Student student2 = new Student(); // ๋ฒ์งธ ํ์ ์์ฑ
student2.studentName = "๊น์ฒ ์";
System.out.println(student2.getStudentName());
System.out.println(student1); // classpart.Student@50040f0c
System.out.println(student2); // classpart.Student@2dda6444
}
}
์์ฑ์(constructor)
์์ฑ์๋ ํด๋์ค๋ฅผ ์ฒ์ ๋ง๋ค ๋ ๋ฉค๋ฒ ๋ณ์๋ ์์๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ
- ๋ํดํธ ์์ฑ์: ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด ์ฃผ๋ ์์ฑ์๋ก, ๋งค๊ฐ๋ณ์๊ฐ ์๊ณ ๊ตฌํ ์ฝ๋๋ ์์
package constructor;
public class Person {
String name;
float height;
float weight;
public Person() {} // ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์ ๊ณตํ๋ ๋ํดํธ ์์ฑ์
}
์์ฑ์ ๋ง๋ค๊ธฐ
ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์์ฑ์๋ฅผ ๊ตฌํํ ์ ์์. ์ฃผ๋ก ๋ฉค๋ฒ ๋ณ์์ ๋ํ ๊ฐ๋ค์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ธ์คํด์ค๊ฐ ์๋ก ์์ฑ๋ ๋ ๋ฉค๋ฒ ๋ณ์ ๊ฐ๋ค์ ์ด๊ธฐํํ๋ ์ญํ ์ ํจ
์ฆ, ์ธ์คํด์ค๊ฐ ์์ฑ๋จ๊ณผ ๋์์ ๋ฉค๋ฒ ๋ณ์์ ๊ฐ์ ์ง์ ํ๊ณ ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํด ์์ฑ์๋ฅผ ์ง์ ๊ตฌํํด์ ์ฌ์ฉํจ
- ์์ฑ์๋ฅผ ์ง์ ๊ตฌํํ๋ฉด ๋ํดํธ ์์ฑ์๊ฐ ๋ง๋ค์ด์ง์ง ์๊ธฐ ๋๋ฌธ์, ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์๋ก ํธ์ถํ๊ฑฐ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ํดํธ ์์ฑ์๋ฅผ ์ถ๊ฐ๋ก ์ง์ ๊ตฌํํด์ผ ํจ
package constructor;
public class Person {
String name;
float height;
float weight;
public Person() {} // ๋ํดํธ ์์ฑ์ ์ง์ ์ถ
// ์ฌ๋ ์ด๋ฆ์ ๋งค๊ฐ๋ณ์๋ก ์
๋ ฅ๋ฐ์์ Person ํด๋์ค๋ฅผ ์์ฑํ๋ ์์ฑ์
public Person(String pname) {
name = pname;
}
}
package constructor;
public class PersonTest {
public static void main(String[] args) {
Person personLee = new Person();
Person personKim = new Person("๊น์ฒ ์");
}
}
์์ฑ์ ์ค๋ฒ๋ก๋
์์ฑ์ ์ค๋ฒ๋ก๋(constructor overload): ํด๋์ค์ ์์ฑ์๊ฐ ๋ ๊ฐ ์ด์ ์ ๊ณต๋๋ ๊ฒฝ์ฐ
- ํ์์ ๋ฐ๋ผ ๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅธ ์์ฑ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค ์ ์์
- ์ฌ๋ฌ ๊ฐ์ง ์์ฑ์๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ, ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์ ํ์ํ ์์ฑ์๋ฅผ ๊ณจ๋ผ์ ์ฌ์ฉ ๊ฐ๋ฅ
์ฐธ์กฐ ์๋ฃํ
์ฐธ์กฐ ์๋ฃํ: ํด๋์ค ์๋ฃํ์ผ๋ก ์ ์ธํ๋ ๋ณ์
- JDK์์ ์ ๊ณตํ๋ ์ฐธ์กฐ ์๋ฃํ(ex: String)
- ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์์ ์ํด ๋ง๋ ํด๋์ค ์๋ฃํ
package reference;
public class Student2 {
int studentID;
String studentName;
int koreaScore;
int mathScore;
String koreaSubject;
String mathSubject;
}
์ ์ฝ๋์ ๊ฒฝ์ฐ ๊ณผ๋ชฉ์ ๋ํ ๋ณ์๊ฐ ๊ณ์ ๋์ด๋๊ฒ ๋จ. ์ด๋ฅผ ๊ณผ๋ชฉ์ ์ด๋ฆ๊ณผ ์ฑ์ ์ Subject ํด๋์ค๋ก ๋ถ๋ฆฌํ๊ณ , ํ์ ํด๋์ค์ Subject ๋ณ์๋ฅผ ๊ฐ ๊ณผ๋ชฉ๋ณ๋ก ์ถ๊ฐํ๋ฉด ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
package reference;
// ๊ณผ๋ชฉ ํด๋์ค
public class Subject {
String subjectName;
int scorePoint;
}
package reference;
public class Student2 {
int studentID;
String studentName;
Subject korean;
Subject math;
}
์ ๋ณด ์๋
์ ๊ทผ ์ ์ด์: ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์์ ์์ฝ์ด๋ฅผ ์ฌ์ฉํด ํด๋์ค ๋ด๋ถ์ ๋ณ์๋ ๋ฉ์๋, ์์ฑ์์ ๋ํ ์ ๊ทผ ๊ถํ ์ง์ ๊ฐ๋ฅ
| ์ ๊ทผ ์ ์ด์ | ์ค๋ช |
| public | ์ธ๋ถ ํด๋์ค ์ด๋์์๋ ์ ๊ทผ ๊ฐ๋ฅ |
| protected | ๊ฐ์ ํจํค์ง ๋ด๋ถ์ ์์ ๊ด๊ณ์ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ |
| ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ(=default) | ๊ฐ์ ํจํค์ง ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ |
| private | ๊ฐ์ ํด๋์ค ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ |
- private์ผ๋ก ์ ์ธํ ๋ณ์๋ฅผ ์ธ๋ถ ์ฝ๋์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ public ๋ฉ์๋ ์ ๊ณตํด์ผ ํจ → get(), set() ๋ฉ์๋
์ฆ, ์ธ๋ถ ํด๋์ค์์ private ๋ณ์์ ์ง์ ์ ๊ทผํ ์๋ ์์ง๋ง, public ๋ฉ์๋๋ฅผ ํตํ๋ฉด private ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅํจ
package hiding;
public class Student {
int studentID;
private String studentName;
int grade;
String address;
// private ๋ณ์์ธ studentName์ ์ ๊ทผํด ๊ฐ์ ๊ฐ์ ธ์ค๋ public get() ๋ฉ์๋
public String getStudentName() {
return studentName;
}
// private ๋ณ์์ธ studentName์ ์ ๊ทผํด ๊ฐ์ ์ง์ ํ๋ public set() ๋ฉ์๋
public void getStudentName(String studentName) {
this.studentName = studentName;
}
}
์ ๋ณด ์๋(information hiding): ํด๋์ค ๋ด๋ถ์์ ์ฌ์ฉํ ๋ณ์๋ ๋ฉ์๋๋ private์ผ๋ก ์ ์ธํด ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ ๊ฒ
- ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์๋ฅผ public์ผ๋ก ์ ์ธํ๋ฉด ์ ๊ทผ์ด ์ ํ๋์ง ์์ผ๋ฏ๋ก ์ ๋ณด์ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ฒฝ์ฐ๋ค๋ private์ผ๋ก ์ ์ธํด ์ค๋ฅ๋ฅผ ๋ง์ ์ ์์