
1. ์์ฑ์๊ฐ ํ์ํ ์ด์ :
๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ณ , ํน์ ์์ ์ ๊ฐ์ฒด ์์ฑ ์์ ์ ์คํํ๋๋ก ํ๊ธฐ ์ํจ์ด๋ค. ์์ฑ์๋ ํด๋์ค์ ํน๋ณํ ๋ฉ์๋๋ก, ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ค.
1.1 ๊ฐ์ฒด ์ด๊ธฐํ - ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ด๊ธฐํ ํ๋ ์ญํ . ๊ฐ์ฒด ์์ฑ์ ํน์ ๊ฐ์ผ๋ก ์ด๊ธฐํํ์ฌ, ์ฌ๋ฐ๋ฅธ ์ํ๋ก ์์ํ ์ ์๋๋ก ๋ณด์ฅํ๋ค.
class Person {
String name;
int age;
//์์ฑ์
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
// ์ฌ์ฉ
Person person = new Person("Alice", 25)
1.2 ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ๊ณผ ๊ฐ๋ ์ฑ : ์ด๊ธฐํ ๋ก์ง์ผ๋ก ์์ฑ์์ ๋ฃ์ผ๋ฉด ๊ฐ์ฒด ์์ฑ ์ ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ณ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค.
//์์ฑ์๊ฐ ์์ ๋
Person person = new Person();
person.name = "Alice";
person.age = 25;
//์์ฑ์๋ฅผ ์ฌ์ฉํ ๋
Person person = new Person ("Alice", 25);
1.3 ๊ธฐ๋ณธ๊ฐ ์ค์ : ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด ์์ฑ ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์์ด, ๋ณ๋์ ์ด๊ธฐํ ์ฝ๋ ์์ด๋ ๊ธฐ๋ณธ์ ์ธ ์ํ ์ ์ง ๊ฐ๋ฅ.
class Car {
String color = "Black";
int wheels = 4;
public Car() {
// ๊ธฐ๋ณธ ์์ฑ์
}
}
Car car = new Car(); // ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ๋จ
1.4 ํ์๊ฐ ๊ฐ์ : ์์ฑ์๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํ์ํ ๊ฐ์ ๊ฐ์ ํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋ถ์์ ํ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
<Account ํด๋์ค>
package javaBasicLecture.review.construct;
public class Account {
String accountNumber;
// ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ ์์ฑ์
public Account(String accountNumber) {
if (accountNumber == null || accountNumber.isEmpty()) {
throw new IllegalArgumentException("๊ณ์ข๋ฒํธ๋ ๊ณต๋ฐฑ์ผ๋ก ๋จ๊ธธ ์ ์์ต๋๋ค.");
}
this.accountNumber = accountNumber;
}
// ๊ธฐ๋ณธ ์์ฑ์
public Account() {
throw new IllegalArgumentException("๊ณ์ข๋ฒํธ๋ฅผ ๋ฐ๋์ ์
๋ ฅํด์ผ ํฉ๋๋ค.");
}
}
1). ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ ์์ฑ์
• ์ด ์์ฑ์๋ accountNumber๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค.
• ์กฐ๊ฑด ๊ฒ์ฌ:
- accountNumber๊ฐ null์ด๊ฑฐ๋ ๋น์ด ์๋ ๊ฐ์ผ ๊ฒฝ์ฐ ์์ธ(IllegalArgumentException)๋ฅผ ๋์ง๋ค
๋์ ธ์ง ์์ธ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฌธ์ ๊ฐ ์๋ค๋ ์ ํธ๋ฅผ ๋ํ๋ธ๋ค.
• ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๋ฉด this.accountNumber = accountNumber;๋ก ๊ฐ์ ์ด๊ธฐํํ๋ค.
2). ๊ธฐ๋ณธ ์์ฑ์
• ์ด ์์ฑ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ง ์๋๋ค.
• ํธ์ถ๋๋ฉด ๋ฌด์กฐ๊ฑด ์์ธ๋ฅผ ๋์ ธ, ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํ์ฉ๋์ง ์์์ ๋ช ํํ ํ๋ค.
<AccountMain ํด๋์ค>
package javaBasicLecture.review.construct;
public class AccountMain {
public static void main(String[] args) {
try {
Account account = new Account(); // ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ
} catch (IllegalArgumentException e) {
System.out.println("์ค๋ฅ ๋ฐ์: " + e.getMessage());
}
}
}
1.) try ๋ธ๋ก
• Account account = new Account();์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
• ๊ธฐ๋ณธ ์์ฑ์๋ IllegalArgumentException ์์ธ๋ฅผ ๋์ง๋ฏ๋ก ์ด ์ฝ๋๋ ๋ฐ๋ก ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค.
2). catch ๋ธ๋ก
• ์์ธ๊ฐ ๋ฐ์ํ๋ฉด catch ๋ธ๋ก์ผ๋ก ์ ์ด๊ฐ ์ด๋ํ๋ค.
• ๋ฐ์ํ ์์ธ ๊ฐ์ฒด(e)์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ์ฌ ๋ฌธ์ ์ ์์ธ์ ์ฌ์ฉ์์๊ฒ ์๋ฆฐ๋ค.
• ์ถ๋ ฅ ๋ฉ์์ง: "์ค๋ฅ ๋ฐ์: ๊ณ์ข๋ฒํธ๋ฅผ ๋ฐ๋์ ์ ๋ ฅํด์ผ ํฉ๋๋ค."
ใ
3. ์คํ ํ๋ฆ
1. main ๋ฉ์๋์์ new Account() ํธ์ถ.
2. ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํธ์ถ๋๋ฉด์ ์์ธ๋ฅผ ๋์ง:
throw new IllegalArgumentException("๊ณ์ข๋ฒํธ๋ฅผ ๋ฐ๋์ ์
๋ ฅํด์ผ ํฉ๋๋ค.");
3. ๋์ ธ์ง ์์ธ๋ catch ๋ธ๋ก์์ ์กํ๊ณ , ๋ฉ์์ง๋ฅผ ์ถ๋ ฅ:
System.out.println("์ค๋ฅ ๋ฐ์: " + e.getMessage());
์ค๋ฅ ๋ฐ์: ๊ณ์ข๋ฒํธ๋ฅผ ๋ฐ๋์ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
1.5 ๋ค์ํ ์ด๊ธฐํ ์ ๊ณต (์ค๋ฒ๋ก๋ฉ)
- ์์ฑ์ ์ค๋ฒ๋ก๋ฉ์ ํตํด ๊ฐ์ฒด๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ด๊ธฐํํ ์ ์๋ค.
class Rectangle {
int width, height;
//๊ธฐ๋ณธ ์์ฑ์
public Rectangle() {
this.width = 1;
this.height = 1;
}
//๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
Rectangle r1 = new Rectangle(); // ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ์ด๊ธฐํ
Rectangel r2 = new Rectangle(5, 10); // ํน์ ๊ฐ์ผ๋ก ์ด๊ธฐํ
}
์ค๋ฒ๋ก๋ฉ์ ์ฌ์ฉํ ๋ ๊ตฌ๋ถ๋๋ ๊ธฐ์ค์ ๋ฐ๋์ ๋งค๊ฐ๋ณ์์ ๊ฐ์, ํ์ , ๋๋ ์์์ด๋ค.
๋ฐํ๊ฐ์ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ๊ตฌ๋ถํ๋ ๊ธฐ์ค์ด ๋ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
< ์ค๋ฒ๋ก๋ฉ(Overloading)๋ ๋ฌด์์ธ๊ฐ? >
- ์ค๋ฒ๋ก๋ฉ์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ ์์ฑ์๋ฅผ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ผ๋ก ์ ์ํ๋ ๊ฒ์ ๋งํ๋ค.
์ฆ, ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง์ง๋ง, ์ ๋ ฅ ๋งค๊ฐ๋ณ์์ ํ์ , ๊ฐ์, ์์๊ฐ ๋ค๋ฅธ ๋ฉ์๋๋ ์์ฑ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํ ์ ์๋ค.
< ์ค๋ฒ๋ก๋ฉ์ ํน์ง >
1. ๊ฐ์ ์ด๋ฆ:
• ๋ฉ์๋ ๋๋ ์์ฑ์์ ์ด๋ฆ์ ๋์ผํ๋ค.
• ํธ์ถ ์ ์ปดํ์ผ๋ฌ๊ฐ ๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐ์์ ๋ฐ๋ผ ์ ํฉํ ๋ฉ์๋/์์ฑ์๋ฅผ ์ ํํ๋ค.
2. ๋งค๊ฐ๋ณ์๋ก ๊ตฌ๋ถ:
• ๋งค๊ฐ๋ณ์์ ํ์ , ๊ฐ์, ๋๋ ์์๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ๋ฉ์๋๋ก ๊ฐ์ฃผ๋๋ค.
• ๋ฐํ๊ฐ์ ํ์ ๋ง์ผ๋ก๋ ๊ตฌ๋ถ๋์ง ์๋๋ค.
< ์ค๋ฒ๋ก๋ฉ์ ๊ท์น>
1. ๋ฉ์๋/์์ฑ์์ ์ด๋ฆ์ ๊ฐ์์ผ ํ๋ค.
2. ๋งค๊ฐ๋ณ์์ ํ์ , ๊ฐ์, ์์ ์ค ํ๋ ์ด์์ด ๋ฌ๋ผ์ผ ํ๋ค.
3. ๋ฐํ๊ฐ์ ํ์ ์ ์ค๋ฒ๋ก๋ฉ ๊ตฌ๋ถ ๊ธฐ์ค์ด ๋์ง ์๋๋ค.
์์ฑ์ ์ค๋ฒ๋ก๋ฉ์ ์
์๋ ์ฝ๋๋ Account ํด๋์ค์์ ์์ฑ์ ์ค๋ฒ๋ก๋ฉ์ ํ์ฉํ๋ ์์ ์ด๋ค.
1. ์ค๋ฒ๋ก๋ฉ๋ ์์ฑ์
public class Account {
String accountNumber;
String accountHolder;
// ๊ธฐ๋ณธ ์์ฑ์: ๋งค๊ฐ๋ณ์ ์์
public Account() {
this.accountNumber = "Unknown";
this.accountHolder = "Unknown";
}
// ๋งค๊ฐ๋ณ์ 1๊ฐ๋ฅผ ๋ฐ๋ ์์ฑ์
public Account(String accountNumber) {
this.accountNumber = accountNumber;
this.accountHolder = "Unknown";
}
// ๋งค๊ฐ๋ณ์ 2๊ฐ๋ฅผ ๋ฐ๋ ์์ฑ์
public Account(String accountNumber, String accountHolder) {
this.accountNumber = accountNumber;
this.accountHolder = accountHolder;
}
}
2. ์ค๋ฒ๋ก๋ฉ๋ ์์ฑ์ ์ฌ์ฉ
public class AccountMain {
public static void main(String[] args) {
// ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ
Account account1 = new Account();
System.out.println("Account 1: " + account1.accountNumber + ", " + account1.accountHolder);
// ๋งค๊ฐ๋ณ์ 1๊ฐ ์์ฑ์ ํธ์ถ
Account account2 = new Account("12345678");
System.out.println("Account 2: " + account2.accountNumber + ", " + account2.accountHolder);
// ๋งค๊ฐ๋ณ์ 2๊ฐ ์์ฑ์ ํธ์ถ
Account account3 = new Account("12345678", "John Doe");
System.out.println("Account 3: " + account3.accountNumber + ", " + account3.accountHolder);
}
}
์คํ ๊ฒฐ๊ณผ
Account 1: Unknown, Unknown
Account 2: 12345678, Unknown
Account 3: 12345678, John Doe
์ค๋ฒ๋ก๋ฉ๊ณผ ๊ด๋ จ๋ ์๋ชป๋ ์
// ์๋ชป๋ ์ค๋ฒ๋ก๋ฉ: ๋ฐํ๊ฐ๋ง ๋ค๋ฆ
public class Account {
public int add() {
return 0;
}
public String add() { // ์ค๋ฅ ๋ฐ์: ๋ฐํ๊ฐ๋ง ๋ค๋ฆ
return "Hello";
}
}
๋ฐํ๊ฐ๋ง ๋ค๋ฅด๋ฉด ์ค๋ฒ๋ก๋ฉ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ ๋ฐํ๊ฐ๋ง์ผ๋ก ์ค๋ฒ๋ก๋ฉ์ด ๋ถ๊ฐ๋ฅํ๊ฐ?
์ปดํ์ผ๋ฌ๋ ๋ฉ์๋ ํธ์ถ ์ ๋ฐํ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด๋ค ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ ์ง ํ๋จํ์ง ์๋๋ค.
ํธ์ถ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋ฐํ๊ฐ์ ๋ช ์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค:
์ ์ฝ๋์์ ์ปดํ์ผ๋ฌ๋ add() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋ค๋ ๊ฒ๋ง ์ ์ ์์ผ๋ฉฐ,Account account = new Account(); account.add();โ
๋ฐํ๊ฐ๋ง ๋ค๋ฅด๋ค๋ฉด ์ด๋ add ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ ์ง ํ๋จํ ์ ์๋ค.
์ค๋ฒ๋ก๋ฉ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ค๋ฉด ๋ฐํ๊ฐ๋ง ๋ค๋ฅด๋ค๋ ์ด์ ๋ก๋ ๊ตฌ๋ถ๋์ง ์๊ณ , ๋งค๊ฐ๋ณ์์ ๊ฐ์, ํ์ , ๋๋ ์์๊ฐ ๋ฌ๋ผ์ผ ํ๋ค.
์ปดํ์ผ๋ฌ๋ ๋ฉ์๋ ์ด๋ฆ๊ณผ ๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ ์ง ํ๋จํ๋ค.
๋ฐํ๊ฐ์ ํธ์ถ ์์ ์ ๊ตฌ๋ถ ๊ธฐ์ค์ด ๋ ์ ์์ผ๋ฏ๋ก,
์๋์ ๊ฐ์ด ๋งค๊ฐ๋ณ์๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ํด์ผ ํ๋ค.
์ฌ๋ฐ๋ฅธ ์ค๋ฒ๋ก๋ฉ์ ์
๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ
public class Account {
public int add() {
return 0;
}
public int add(int a) {
return a;
}
}
๋งค๊ฐ๋ณ์์ ํ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ
public class Account {
public int add(int a) {
return a;
}
public double add(double a) {
return a;
}
}
๋งค๊ฐ๋ณ์์ ์์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ
public class Account {
public int add(int a, String b) {
return a;
}
public int add(String b, int a) {
return a;
}
}