μμ±μλ?
μΈμ€ν΄μ€κ° μμ±λ λ νΈμΆλλ ‘μΈμ€ν΄μ€ μ΄κΈ°ν λ©μλ’μ΄λ€.
public class Car {
String brand;
String model;
int year;
// 맀κ°λ³μκ° μλ μμ±μ
public Car() { }
// 맀κ°λ³μκ° μλ μμ±μ
public Car(String brand, String model, int year) {
this.brand = brand;
this.model = model;
this.year = year;
}
// λ©μλ
public void displayInfo() {
System.out.println("Brand: " + brand);
System.out.println("Model: " + model);
System.out.println("Year: " + year);
}
public static void main(String[] args) {
// μμ±μλ₯Ό μ¬μ©νμ¬ Car κ°μ²΄ μμ±
Car myCar = new Car("Toyota", "Camry", 2022);
myCar.displayInfo();
}
}
μμ±μμ 쑰건
μμ±μμ μ΄λ¦μ ν΄λμ€μ μ΄λ¦κ³Ό κ°μμΌ νλ€.
μμ±μλ λ¦¬ν΄ κ°μ΄ μλ€.
μμ±μλ μ€λ²λ‘λ©μ΄ κ°λ₯νλ―λ‘ νλμ ν΄λμ€μ μ¬λ¬κ°μ μμ±μκ° μ‘΄μ¬ν μ μλ€.
Car myCar = new Car("Toyota", "Camry", 2022);
κ·Έλ¦¬κ³ μ°μ°μ newκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄μ§
μμ±μκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²
μ΄ μλλ€.
‘μμ±μ’λΌλ λ¨μ΄ λλ¬Έμ μμ±νλ€λΌκ³ μ€ν΄ν μ μλλ°, μμ±μλ λ¨μν μΈμ€ν΄μ€ λ³μλ€μ μ΄κΈ°νμ μ¬μ©λλ μ‘°κΈ νΉλ³ν λ©μλμΌ λΏμ΄λ€.
Car c = mew Car();
1οΈβ£ μ°μ°μ newμ μν΄μ λ©λͺ¨λ¦¬(heap)μ Carν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λλ€.
2οΈβ£ μμ±μ Car()κ° νΈμΆλμ΄ μνλλ€.
3οΈβ£ μ°μ°μ newμ κ²°κ³Όλ‘, μμ±λ Car μΈμ€ν΄μ€μ μ£Όμκ° λ°νλμ΄ μ°Έμ‘°λ³μ cμ μ μ₯λλ€.
κΈ°λ³Έ μμ±μ(default constructor)
μ¬μ€ λͺ¨λ ν΄λμ€μλ λ°λμ νλ μ΄μμ μμ±μκ° μ μλμ΄ μμ΄μΌ νλ€.
κ·Έλ¬λ μ§κΈκΉμ§λ μ»΄νμΌλ¬κ° μ 곡νλ ‘κΈ°λ³Έ μμ±μ’ λλΆμ μμ±μλ₯Ό μ μνμ§ μκ³ λ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμλ€.
class Data1 {
int value;
}
class Data2 {
int value;
Data2(int x){
value = x;
}
}
class ConstructorTest {
public static void main(String[] args) {
Data1 d1 = new Data1();
Data2 d2 = new Data2(); // compile error λ°μ
Data2 d3 = new Data2(7); // μ΄λ κ² μ¨μΌ ν¨
}
}
Data1μλ μ μλμ΄ μλ μμ±μκ° νλλ μμΌλ―λ‘ μ»΄νμΌλ¬κ° κΈ°λ³Έ μμ±μλ₯Ό μΆκ°ν΄μ€«λ€.
νμ§λ§ Data2μλ μ΄λ―Έ μμ±μ Data2(int x) κ° μ μλμ΄ μμΌλ―λ‘ κΈ°λ³Έ μμ±μκ° μΆκ°λμ§ μμκΈ° λλ¬Έμ μλ¬κ° λ°μν κ²μ΄λ€.
맀κ°λ³μκ° μλ μμ±μ
class Car {
String color;
String gearType;
int door;
Car() {}
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
μ΄λ κ² λ§€κ°λ³μλ₯Ό μ¬μ©ν μ΄κΈ°νλ₯Ό λ§λ€μ΄μ€¬λ€.
λ§μ½ μ΄κΈ°νκ° μλ κ²½μ°
Car c = new Car();
c.color = "white";
c.gearType = "auto";
c.door = 4;
μ΄κΈ°νκ° μλ κ²½μ°
Car c = new Car("white", "auto", 4);
λ‘ μ΄κΈ°νλ₯Ό νμ λ λ³΄λ€ λ μ§κ΄μ μ΄κ³ κ°κ²°νκ² λ§λ€ μ μλ€.
μμ±μμμ λ€λ₯Έ μμ±μ νΈμΆνκΈ° - this(), this
κ°μ ν΄λμ€μ λ©€λ²λ€ κ°μ μλ‘ νΈμΆν μ μλ κ²μ²λΌ μμ±μ κ°μλ μλ‘ νΈμΆμ΄ κ°λ₯νλ€.
λ¨, λ€μμ λ 쑰건μ λ§μ‘±μμΌμΌ νλ€.
μμ±μμ μ΄λ¦μΌλ‘ ν΄λμ€μ΄λ¦ λμ thisλ₯Ό μ¬μ©νλ€.
ν μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λλ λ°λμ 첫 μ€μμλ§ νΈμΆμ΄ κ°λ₯νλ€.
β 첫 μ€μμλ§ νΈμΆμ΄ κ°λ₯ν μ΄μ β
μ΄κΈ°ν μμ μ μμλ₯Ό 보μ₯νκΈ° μν΄μμ΄λ€.
κ°μ²΄λ₯Ό μ¬μ©νκΈ° μ μ μ΄κΈ°νλ₯Ό λ¨Όμ ν΄μΌ νκΈ° λλ¬Έμ κ·μΉμ κ·Έλ κ² μ ν κ²μ΄λ€.
Car(String color) {
door = 5; //
Car(color, "auto", 4); // μλ¬1. μμ±μμ λ λ²μ§Έ μ€μμ λ€λ₯Έ μμ±μ νΈμΆ
} // μλ¬2. this(color, "auto", 4);λ‘ ν΄μΌ ν¨
Car (String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
맀κ°λ³μλ‘ μ μΈλ λ³μμ μ΄λ¦μ΄ colorλ‘ μΈμ€ν΄μ€λ³μ colorμ κ°μ κ²½μ°μλ μ΄λ¦λ§μΌλ‘λ λ λ³μκ° μλ‘ κ΅¬λ³μ΄ μ λλ€.
μ΄λ° κ²½μ°μλ μΈμ€ν΄μ€ λ³μ μμ ‘this’λ₯Ό μ¬μ©νλ©΄ λλ€.
color = color
μ΄λ κ² νλ©΄ λ λ€ μ§μλ³μλ‘ κ°μ£Όλλ€.
this
λ μ°Έμ‘°λ³μλ‘ μΈμ€ν΄μ€ μμ μ κ°λ¦¬ν¨λ€.
μ°Έμ‘°λ³μλ₯Ό ν΅ν΄ μΈμ€ν΄μ€μ λ©€λ²μ μ κ·Όν μ μλ κ²μ²λΌ, this
λ‘ μΈμ€ν΄μ€λ³μμ μ κ·Όν μ μλ κ²μ΄λ€.
staticλ©μλμμλ μΈμ€ν΄μ€ λ©€λ²λ€μ μ¬μ©ν μ μλ κ²μ²λΌ, this
μμ μ¬μ©ν μ μλ€.
μ¬μ€ μμ±μλ₯Ό ν¬ν¨ν λͺ¨λ μΈμ€ν΄μ€λ©μλμλ μμ μ΄ κ΄λ ¨λ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μ°Έμ‘°λ³μ this
κ° μ§μλ³μλ‘ μ¨κ²¨μ§ μ±λ‘ μ‘΄μ¬νλ€.
μΌλ°μ μΌλ‘ μΈμ€ν΄μ€λ©μλλ νΉμ μΈμ€ν΄μ€μ κ΄λ ¨λ μμ μ νκΈ° λλ¬Έμ μμ κ³Ό κ΄λ ¨λ μΈμ€ν΄μ€μ μ λ³΄κ° νμνμ§λ§, staticλ©μλλ μΈμ€ν΄μ€μ κ΄λ ¨ μλ μμ μ νλ―λ‘ μΈμ€ν΄μ€μ λν μ λ³΄κ° νμ μκΈ° λλ¬Έμ΄λ€.
this μΈμ€ν΄μ€ μμ μ κ°λ¦¬ν€λ μ°Έμ‘°λ³μ. μΈμ€ν΄μ€μ μ£Όμκ° μ μ₯λμ΄ μλ€.
λͺ¨λ μΈμ€ν΄μ€λ©μλμ μ§μλ³μλ‘ μ¨κ²¨μ§ μ±λ‘ μ‘΄μ¬νλ€.
this(), this(맀κ°λ³μ) μμ±μ, κ°μ ν΄λμ€μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆ ν λ μ¬μ©νλ€.
μμ±μλ₯Ό μ΄μ©ν μΈμ€ν΄μ€μ 볡μ¬
class Car {
String color;
String gearType;
int door;
Car() {
this("white", "auto", 4);
}
Car(Car c) { // 볡μ¬
color = c.color;
gearType = c.gearType;
door = c.door;
}
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
κΈ°μ‘΄ κ°μ²΄μ μνλ₯Ό 볡μ¬νμ¬ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νκ³ μ ν λ μ¬μ©λλ€.
μΈμ€ν΄μ€λ₯Ό μμ±ν λλ λ€μμ 2κ°μ§ μ¬νμ κ²°μ ν΄μΌ νλ€.
1. ν΄λμ€ - μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν κ²μΈκ°?
2. μμ±μ - μ νν ν΄λμ€μ μ΄λ€ μμ±μλ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν κ²μΈκ°?