[Java] ν΄λμ€(Class) - λ°±κΈ°μ λΌμ΄λΈ μ€ν°λ
π λͺ©ν
μλ°μ Classμ λν΄ νμ΅νμΈμ.
νμ΅ν κ² (νμ)
- ν΄λμ€ μ μνλ λ°©λ²
- κ°μ²΄ λ§λλ λ°©λ² (new ν€μλ μ΄ν΄νκΈ°)
- λ©μλ μ μνλ λ°©λ²
- μμ±μ μ μνλ λ°©λ²
- this ν€μλ μ΄ν΄νκΈ°
π ν΄λμ€λ ?
ν΄λμ€(Class)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μμ νΉμ κ°μ²΄λ₯Ό μμ±νκΈ° μν΄ λ³μμ λ©μλλ₯Ό μ μνλ μΌμ’ μ μ€κ³λ νΉμ νμ΄λ€.
κ°μ²΄(Object) ?
λ©΄μ μμ κ°μ²΄(Object)κ° λμ§ μ μν μ μλλ μ§λ¬Έμ λ°μμ λ λ¨Έλ¦Ώμμ΄ νμμ§λ©΄μ ν‘μ€μμ€νλ©° λλ΅νλ κ²½νμ΄ μλ€.
κ°μ²΄(Object)μ μ¬μ μ μλ―Έλ μλμ κ°λ€.
- 1.λͺ μ¬ μμ¬λ νμκ° λ―ΈμΉλ λμ.
- 2.λͺ μ¬ λ¬Έμ₯ λ΄μμ λμ¬μ νμκ° λ―ΈμΉλ λμ.
- 3.λͺ μ¬ μμ©μ λμμ΄ λλ μͺ½.
μ¦ κ°μ²΄(Object)λ μ΄λ ν νμλ μμ±μ κΈ°λ₯μ κ°μ§λ λμμΌλ‘ μ°λ¦¬κ° μ€μνμμ μΈμν μ μλ μ¬λ¬Όμ΄λΌκ³ μκ°ν μ μλ€.
μ»΄ν¨ν° 곡νμ κ΄μ μμ μ΄λ¬ν κ°μ²΄μ μνμ νμλ₯Ό ꡬ체ννμ¬ νλ‘κ·Έλλ°μ νλκ²μ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP)λΌκ³ μ΄ν΄ν μ μλ€.
π κ°μ²΄λ₯Ό λ§λλ λ°©λ²(new ν€μλμ λν μ΄ν΄)
κ°μ²΄λ₯Ό μμ±νκΈ° μν΄μλ μλμκ°μ΄ new ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
Car car = new Car();
new ν€μλλ‘ μμ±ν κ°μ²΄λ λ©λͺ¨λ¦¬ ꡬ쑰μ Heapμμμ μ¬λΌκ°κ³ μ μ₯λ μ£Όμκ°μ λ°νν΄μ€λ€.
λ°λΌμ carλΌλ λ³μλ new ν€μλλ‘ μμ±ν κ°μ²΄μ μ£Όμκ°μ μ°Έμ‘°νλ ννκ° λλ€.
πλ©μλλ₯Ό μ μνλ λ°©λ²
Classλ΄μμλ μμ±μ νννλ νλ(Field)μ κΈ°λ₯μ νννλ λ©μλ(Method)λ₯Ό κ°μ§λ€.
λ©μλ(Method)λ νΉμ μμ μ μννκΈ° μν λͺ λ Ήλ¬Έμ μ§ν©μΌλ‘ λ³Ό μ μλ€.
μμκ°μ΄ λ©μλ (Method)λ₯Ό μ μνλ μ΄μ λ λ°λ³΅μ μΌλ‘ μ¬μ©λλ μ½λλ₯Ό λ©μλ νλλ‘ μ μνμ¬ μ¬λ¬κ³³μμ μ¬μ¬μ©ν μ μκ³ μ¬λ¬κ³³μμ μ¬μ©λλ λ©μλλ ν΄λΉ λ©μλ νλλ§ μμ νλ©΄ λκΈ°λλ¬Έμ μ μ§λ³΄μ μΈ‘λ©΄μμλ μ μ©νλ€.
λ©μλλ₯Ό μμ±ν λλ νλμ κΈ°λ₯λ§μ μννλλ‘ μμ±νλ κ²μ΄ μ’λ€.
λ©μλλ μμκ°μ ꡬμ±μΌλ‘ μμ±ν΄μΌ νλ€.
public class Car {
public void stop(){
System.out.println("μ°¨λ₯Ό λ©μΆ₯λλ€.")
}
public void run(){
System.out.println("μ°¨λ₯Ό μμ§μ
λλ€.")
}
}
public class CarMain{
public static void main(String[] args) {
Car car = new Car();
car.run;
car.stop;
}
}
μμ μμμμλ CarλΌλ ν΄λμ€λ₯Ό μ μνκ³ μμ run(), stop()μ΄λΌλ μ°¨μ κΈ°λ₯μ μ μν λ©μλλ₯Ό μμ±νλ€.
μ΄ν new ν€μλλ₯Ό μ¬μ©ν΄ carκ°μ²΄λ₯Ό λ§λ€κ³ carλ³μμ μ μ₯λ μ£Όμκ°μ ν΅ν΄ Car ν΄λμ€λ΄μ μ μλμ΄ μλ λ©μλλ₯Ό μ¬μ©νκ³ μλ€.
πμμ±μ μ μνλ λ°©λ²
public class Car {
String name;
public void stop(){
System.out.println("μ°¨λ₯Ό λ©μΆ₯λλ€.")
}
public void run(){
System.out.println("μ°¨λ₯Ό μμ§μ
λλ€.")
}
public Car(){
}
public Car(String name){
this.name = name;
}
}
public class CarMain{
public static void main(String[] args) {
Car car = new Car();
Car car = new Car("λ보λ₯΄κΈ°λ");
}
}
μμκ°μ΄ μμ±μλ₯Ό μ μνλ λ°©λ²μλ κΈ°λ³Έμμ±μμ λ§€κ°λ³μλ₯Ό κ°λ μμ±μλ‘ μ μν μ μλ€.
λ§μΌ Car ν΄λμ€ λ΄μμ κΈ°λ³Έ μμ±μλ₯Ό λͺ μνμ§ μμλ€λ©΄ new ν€μλλ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±ν λ μ»΄νμΌλ¬κ° μλμΌλ‘ κΈ°λ³Έ μμ±μλ₯Ό μμ±νλ€.
νμ§λ§ μΈμλ₯Ό κ°λ μμ±μλ₯Ό μ μνλ€λ©΄ μ»΄νμΌλ¬λ κΈ°λ³Έ μμ±μλ₯Ό μλμΌλ‘ μμ±ν΄μ£Όμ§ μκΈ° λλ¬Έμ μ»΄νμΌ μ€λ₯κ° λλ€.
μ€λ₯κ° λ°μνλ μ΄μ λ ν΄λμ€λ΄μ κΈ°λ³Έ μμ±μκ° μ μλμ΄ μμ΄μΌνκΈ° λλ¬Έμ΄λ€.
πthis ν€μλ
this ν€μλλ μκΈ°μμ μ κ°λ¦¬ν¨λ€.
public class Car {
String name;
public Car(){
System.out.println("this νΈμΆ")
}
public Car(String name){
this();
this.name = name;
}
}
public class CarMain{
public static void main(String[] args) {
Car car = new Car("λ보λ₯΄κΈ°λ");
}
}
ν΄λΉ μ½λμμ carλΌλ κ°μ²΄λ₯Ό μμ±ν λ "λ보λ₯΄κΈ°λ"λΌλ μ°¨μ μ΄λ¦μ λ§€κ°λ³μλ‘ μ λ¬νλ€.
μμ μΈμλ₯Ό λ°λ μμ±μμ name μΈμμλ "λ보λ₯΄κΈ°λ"λΌλ μ΄λ¦μ΄ μ λ¬λκ³ thisλΌλ ν€μλλ₯Ό μ¬μ©ν΄ Carν΄λμ€μ μΈμ€ν΄μ€μ μ΄λ¦μ μ μ₯νλ€.
μ¦ thisλ μκΈ°μμ μ νλ νΉμ μμ±μλ₯Ό κ°λ¦¬ν€λ ν€μλλ‘ μ¬μ©λλ€.