μμ±μ(Constructor)
μμ±μλ new μ°μ°μλ₯Ό ν΅ν΄μ μΈμ€ν΄μ€λ₯Ό μμ±ν λ λ°λμ νΈμΆμ΄ λκ³ μ μΌ λ¨Όμ μ€νλλ μΌμ’ μλ©μλ
(νμ§λ§ λ©μλμλ λ€λ₯΄λ€.)
μμ±μλ μΈμ€ν΄μ€ λ³μ(νλ κ° λ±)λ₯Ό μ΄κΈ°ν μν€λ μν μ νλ€.
μμ±μλ₯Ό μ μΈνλ λ°©λ²μ μμ λ΄μ©κ³Ό κ°λ€.
ν΄λμ€λΌλ λΆλΆμ μμ±μλ₯Ό μ μνλ ν΄λμ€μ μ΄λ¦κ³Ό λμΌνκ² μ μ΄μ€μΌ νλ€.
λΉ¨κ°μμΌλ‘ νμν λΆλΆμ νμλ‘ μ μ΄μΌ νλ λ΄μ©μ μλλ€.
λ©μλλͺ μ΄ ν΄λμ€λͺ κ³Ό λμΌνκ³ λ¦¬ν΄ μλ£νμ μ μνμ§ μλ λ©μλλ₯Ό μμ±μ(Constructor)λΌκ³ νλ€.
μμ±μμ κ·μΉ
- ν΄λμ€λͺ κ³Ό λ©μλλͺ μ΄ λμΌνλ€.
- 리ν΄νμ μ μ μνμ§ μλλ€. (voidλ μ¬μ©νμ§ μλλ€.)
μμ±μλ κ°μ²΄κ° μμ±λ λ νΈμΆλλ€.
μ¦, μμ±μλ λ€μκ³Ό κ°μ΄ new ν€μλκ° μ¬μ©λ λ νΈμΆλλ€.
public class ConstructorEx01 {
// public ConstructorEx01(){ } // Default Constructor μλ μμ±
public static void main(String[] args) {
ConstructorEx01 ce = new ConstructorEx01(); // μΈμ€ν΄μ€ μμ± λ° μμ±μ νΈμΆ
}
ν΄λμ€λ₯Ό μ μν λ μμ±μλ₯Ό μλ΅νλ©΄ μ»΄νμΌλ¬κ° μλμ μΌλ‘ κΈ°λ³Έ μμ±μ(Default Constructor)λ₯Ό μμ±
public class ConstructorEx03 {
public ConstructorEx03(){
System.out.println("μμ±μ νΈμΆ μ±κ³΅");
}
public ConstructorEx03(String a){ // a = μ¬μ©μ μ μ
System.out.println(a + " μμ±μ νΈμΆ μ±κ³΅");
}
public static void main(String[] args) {
ConstructorEx03 ce = new ConstructorEx03("μ¬μ©μ μ μ"); // 맀κ°λ³μλ₯Ό κ°λ μμ±μ νΈμΆ
ConstructorEx03 ce2 = new ConstructorEx03(); // κΈ°λ³Έ μμ±μ νΈμΆ
}
}
μμ±μμ 맀κ°λ³μλ₯Ό λ€λ₯΄κ² μ§μ νμ¬ μ μνλ κ²μ μμ±μ μ€λ²λ‘λ©
final ν€μλ
final ν€μλλ λ³μ(variable), λ©μλ(method), λλ ν΄λμ€(class)μ μ¬μ©λ μ μμ΅λλ€.
final ν€μλλ₯Ό λΆμ΄λ©΄ 무μΈκ°λ₯Ό μ ννλ€λ μλ―Έ
λ³μ(variable)
λ³μμ finalμ λΆμ΄λ©΄ μ΄ λ³μλ μμ ν μ μλ€λ μλ―Έ
μμ λ μ μκΈ° λλ¬Έμ μ΄κΈ°ν κ°μ νμμ μ λλ€. λ§μ½μ κ°μ²΄μμ λ³μλΌλ©΄ μμ±μ μ΄κΈ°νκΉμ§λ νμ©
λ©μλ(method)
λ©μλμ finalμ λΆμ΄λ©΄ overrideλ₯Ό μ ν
μμ λ°μ ν΄λμ€μμ ν΄λΉ λ©μλλ₯Ό μμ ν΄μ μ¬μ©νμ§ λͺ»νλλ‘ ν μ μλκ²μ΄ λ©μλμ finalμ λΆμ΄λ κ²
ν΄λμ€(Class)
final ν€μλλ₯Ό ν΄λμ€μ λΆμ΄λ©΄ μμ λΆκ°λ₯ ν΄λμ€
λ€λ₯Έ ν΄λμ€μμ μμνμ¬ μ¬μ μλ₯Ό ν μ μλ κ²μ λλ€
μΈμ€ν΄μ€ λ³μμ μ΄κΈ°ν
ν΄λμ€λ₯Ό κ°μ§κ³ κ°μ²΄λ₯Ό μμ±νλ©΄, ν΄λΉ κ°μ²΄λ λ©λͺ¨λ¦¬μ μ¦μ μμ±λ©λλ€.
νμ§λ§ μ΄λ κ² μμ±λ κ°μ²΄λ λͺ¨λ μΈμ€ν΄μ€ λ³μκ° μμ§ μ΄κΈ°νλμ§ μμ μνμ λλ€.
μμ±μ(constructor)
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
κ°μ²΄μ μμ±κ³Ό λμμ μΈμ€ν΄μ€ λ³μλ₯Ό μνλ κ°μΌλ‘ μ΄κΈ°νν μ μλ λ©μλ
μμ±μ(constructor)μ μ΄λ¦μ ν΄λΉ ν΄λμ€μ μ΄λ¦κ³Ό κ°μμΌ ν©λλ€.
μ΄λ¬ν μμ±μλ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§λλ€.
1. μμ±μλ λ°νκ°μ΄ μμ§λ§, λ°ν νμ μ voidνμΌλ‘ μ μΈνμ§ μμ΅λλ€.
2. μμ±μλ μ΄κΈ°νλ₯Ό μν λ°μ΄ν°λ₯Ό μΈμλ‘ μ λ¬λ°μ μ μμ΅λλ€.
3. κ°μ²΄λ₯Ό μ΄κΈ°ννλ λ°©λ²μ΄ μ¬λ¬ κ° μ‘΄μ¬ν κ²½μ°μλ νλμ ν΄λμ€κ° μ¬λ¬ κ°μ μμ±μλ₯Ό κ°μ§ μ μμ΅λλ€.
μ¦, μμ±μλ νλμ λ©μλμ΄λ―λ‘, λ©μλ μ€λ²λ‘λ©μ΄ κ°λ₯νλ€λ μλ―Έμ λλ€.
λ©μλ μ€λ²λ‘λ©(overloading) : κ°μ μ΄λ¦μ λ©μλλ₯Ό μ€λ³΅νμ¬ μ μνλ κ²μ μλ―Έν©λλ€.
맀κ°λ³μμ κ°μλ νμ μ λ€λ₯΄κ² νλ©΄, νλμ μ΄λ¦μΌλ‘ λ©μλλ₯Ό μμ±ν μ μμ΅λλ€.
μμ±μμ νΈμΆ
μλ°μμλ new ν€μλλ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό μμ±ν λ μλμΌλ‘ μμ±μκ° νΈμΆλ©λλ€.
"μμ±μ μ£Όμ μ νΈμΆ μμ μ νΈμΆλκ³ νλΌλ―Έν°κ° μ΄κΈ°νλλ―λ‘ finalμ΄ μ¬μ©κ°λ₯νμ§λ§,
setterλ κ°μ²΄κ° μμ±λ λ€μμ νΈμΆ λ° μ΄κΈ°νλλ―λ‘ finalμ μ¬μ©ν μ μλ€."
final ν€μλλ κ°λ¨ν λ§νλ©΄ λ©€λ² λ³μλ₯Ό 'μμ'(const)λ‘ λ§λ€κ² λ€λ λ»μ λλ€.
λ³μμ κ²½μ°λ κ·Έλ κ³ λ©μλμ λΆλ finalμ μ¬μ μκ° λΆκ°λ₯, ν΄λμ€μ λΆλ finalμ μμ λΆκ°λ₯ λ±μΌλ‘ μλ―Έκ° λ¬λΌμ§λλ€.
μμλ νλ² κ°μ ν λΉνλ©΄, λ€μ κ·Έ κ°μ λ³κ²½ν μ μμμ λ§ν©λλ€.
κ·Έλμ μλ°μμλ μμλ μ μΈκ³Ό λμμ κ°μ ν λΉνλλ‘ μ ννκ³ μμ΅λλ€.
private final int score = 0;
κ·Έλ¬λ μ μΈκ³Ό λμμ κ°μ ν λΉνμ§ μμλ λλ μμΈκ° μλλ°, μμ±μμμ μμλ₯Ό μ΄κΈ°ν ν λ μ λλ€.
μμ±μλ κ°μ²΄λ₯Ό μμ±νκΈ° μν΄ 'λ°λμ' κ±°μ³μΌ νλ κ³Όμ μ΄κ³ ,
μ¬κΈ°μ μμκ°μ μ΄κΈ°νλ₯Ό νκ³ μλ€λ©΄ μ΄λ 'νμ€ν μμκ° μ΄κΈ°ν λ¨μ 보μ₯'ν©λλ€.
κ·Έλμ μ΄λ° κ²½μ°λ μ»΄νμΌμ νκ° ν©λλ€.
private final int score;
public SomeClass(int score) {
this.score = score;
}
setterλ‘ λ©€λ² λ³μλ₯Ό μ€μ νλ€λ κ²μ κ°μ²΄κ° μμ±λλ κ³Όμ μ΄ λͺ¨λ λλ μ΄νμ
setter λ©μλλ₯Ό νΈμΆνμ¬ λ©€λ² λ³μμ κ°μ ν λΉνκ² λ€λ λ»μ λλ€.
λ§μ½ μ΄ κ°μ²΄μ λ©€λ² λ³μμ€ μμκ° μμκ²½μ°, μμκ° μμ±μ λμμΌλ μΈμ μ΄κΈ°ν λ μ§λ₯Ό μ»΄νμΌλ¬κ° μ μ μμ΅λλ€.
κ·Έλμ μ΄λ° κ²½μ° final ν€μλλ₯Ό μ°μ§ λͺ»νλλ‘ μ»΄νμΌλ¬κ° λ§μ΅λλ€.
[μΆμ²] [JAVA/μλ°] μμ±μ(Constructor)μ μ΄κΈ°ν|μμ±μ JOKER
https://www.tcpschool.com/java/java_methodConstructor_constructor
'Develop > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] μμΈμ²λ¦¬ (Exception) (0) | 2023.01.20 |
---|---|
JAVA / λ°°μ΄(Array) μ 리μ€νΈ(List) μ μ°¨μ΄ / μ λ€λ¦μ€(Generics) (0) | 2023.01.20 |
(0) . JAVA νμ΅ νκ²½ ꡬμΆνκΈ° / JAVA μΈμ΄μ νΉμ§ (0) | 2023.01.07 |