
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ€μΈκ³μ μ‘΄μ¬νλ μ¬λ¬Όμ κ°μ±(Object)λ‘ λκ³ κ°μ²΄μ μμ±κ³Ό κΈ°λ₯μ κΈ°λ°μΌλ‘ νλ‘κ·Έλλ°νλ€. Javaλ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ νλ©΄μ ν΄λμ€ κΈ°λ°μ μΈμ΄μ΄λ€. ν΄λμ€λ κ°μ μ’ λ₯μ μ§λ¨μ μνλ μμ±(attribute)κ³Ό νμ(behavior)λ₯Ό μ μν κ²μΌλ‘ κ°μ²΄μ§ν₯ νλ‘κ·Έλ¨μ κΈ°λ³Έμ μΈ μ¬μ©μ μ μ λ°μ΄ν°νμ΄λ€.
μλ°μμ ν΄λμ€λ νλ,μμ±μ,λ©μλλ‘ κ΅¬μ±λλ€.
public class Person {
private String name;
private String age;
// default μμ±μ
public Person(){
}
// νλΌλ―Έν°λ₯Ό κ°μ§ μμ±μ -> μμ±
public Person(String name, String age){
this.name = name;
this.age = age;
}
// λ©μλ, μ΄λ¦μ κ°μ Έμ€λ νμλ₯Ό λͺ
μνλ€.
public String getName(){
return name;
}
}
class ν€μλλ₯Ό μ¬μ©νμ¬ ν΄λμ€λ₯Ό μ μνκ³ , μΈλΆ ν΄λμ€κ° ν΄λΉ ν΄λμ€μ μ κ·Όνλ λ²μλ₯Ό μ κ·Ό μ μ΄μ(public, protected, default, private) λ₯Ό ν΅ν΄ μ νν μ μλ€.
public : μ κ·Όλ²μμ μ νμ΄ μμ΄ μ΄λμμλ μμ λ‘κ² μ κ·Όν μ μλ€.protected : κ°μ ν¨ν€μ§ λ΄μμ μ κ·Όμ΄ κ°λ₯νκ³ λ€λ₯Έ ν¨ν€μ§μμλ μμμ λ°μ ν΄λμ€ λ΄λΆμμλ μ¬μ©μ΄ κ°λ₯νλ€. (publicκ³Ό λ€λ₯Έ μ μ λ€λ₯Έ ν¨ν€μ§μ μμ ν΄λμ€ μΈλΆμμλ μ κ·Όν μ μλ€.)default : κ°μ ν¨ν€μ§ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ€. μλ¬΄λ° μ κ·Ό μ§μ μλ μμ κ²½μ° μ΄ μ΅μ
μ΄ μλμΌλ‘ μ μ©λλ€.private : λμΌ ν΄λμ€ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ€.ν΄λμ€λ₯Ό μ μν ν ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό λ§λ€μ΄ μ¬μ©ν΄μΌ νλλ° μ΄λ¬ν κ³Όμ μ ν΄λμ€μ μΈμ€ν΄μ€νλΌκ³ νλ€. κ°μ²΄λ new ν€μλλ₯Ό μ΄μ©ν΄ μμ±μ΄ κ°λ₯νλ€.
new ν€μλλ₯Ό μ΄μ©νλ©΄ λ©λͺ¨λ¦¬ heap μμμ λ°μ΄ν°λ₯Ό μ μ₯ν μμμ ν λΉ λ°μ ν ν΄λΉ μμμ μ£Όμλ₯Ό κ°μ²΄μκ² λ°ννμ¬ κ°μ²΄λ₯Ό μ¬μ©ν μ μκ² νλ€.
Person person = new Person(); // κΈ°λ³Έ μμ±μ
Person person1 = new Person(βJieunβ, 25); // νλΌλ―Έν°λ₯Ό κ°μ§λ μμ±μ
person1.getName(); // Jieun
public class Main{
public static void main(String[] args){
//new μ°μ°μ
String str = new String("string");
String str2 = new String("string");
//리ν°λ΄
String str3 = "string";
String str4 = "string";
}
}
new μ°μ°μλ₯Ό ν΅ν΄ "string"μ΄λΌλ λ¬Έμμ΄κ°μ λ΄κ³ μλ String κ°μ²΄λ₯Ό μμ±νλ€. λ³μ strλ Stack μμμ μμ±λκ³ new StringμΌλ‘ μμ±λ λ¬Έμμ΄κ°μ΄ Heapμμμ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλ°λλ€. strμ΄λΌλ λ³μλ Heapμμμ λ©λͺ¨λ¦¬μ£Όμλ₯Ό κ°λ₯΄ν€κ² λκ³ μ΄λ₯Ό λ€λ₯Έ λ§λ‘ μ°Έμ‘°λΌκ³ νλ€.

κ·ΈλΌ newμ°μ°μμ 리ν°λ΄μ μ°¨μ΄λ₯Ό νλ² λ³΄μ.
newμ°μ°μλ κ°μ²΄λ₯Ό μμ±ν λ μ¬μ©νκΈ° λλ¬Έμ Heapμ΄λΌλ λ©λͺ¨λ¦¬ μμμ λ€μκ³Ό κ°μ΄ κ°κ°μ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉν΄ μ€λ€. newμ°μ°μλ‘ μμ±ν κ°μ²΄λ€μ λ©λͺ¨λ¦¬ μ£Όμκ° λ€λ₯΄κ² λμ€λ κ²μ΄λ€. νμ§λ§ 리ν°λ΄μ μ΄μ μ 곡λΆνλκ²μ²λΌ Heapλ©λͺ¨λ¦¬ μμ μμ μλ Constant Poolμ΄λΌλ λ©λͺ¨λ¦¬ μμμ ν λΉνκ²λκ³ λκ°μ κ°μ νΈμΆν λλ μ΄ μ μ ν λΉν΄ λμλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό λ겨μ€λ€.
λ©μλλ μλ°μμ ν΄λμ€κ° κ°μ§λ κ²μΌλ‘ νΉμ μμ μ μννκΈ° μν λͺ λ Ήλ¬Έμ μ§ν©μ λ§νλ€. λ€λ₯Έ μΈμ΄μμλ ν¨μλ‘ λΆλ¦¬κΈ°λ νλ€.
μ κ·Όμ μ΄μ λ°ννμ
λ©μλμ΄λ¦(λ§€κ°λ³μλͺ©λ‘){ //μ μΈλΆ
//ꡬνλΆ
}
public String get FirstName(){
return this.firstName;
}
λ€μκ³Ό κ°μ΄ λ©μλλ₯Ό μ μν μ μλ€.
μ κ·Όμ μ΄μ : ν΄λΉ λ©μλμ μ μν μ μλ λ²μλ₯Ό λͺ
μνλ€.λ°ννμ
: λ©μλκ° μμ
μ λ§μΉκ³ λ°ννλ λ°μ΄ν°μ νμ
μ λͺ
μνλ€. (λ°ννμ
μμ΄ νΉμ μμ
λ§ νκ³ μΆλ€λ©΄ voidλ₯Ό μ¬μ©νλ€.)λ©μλ μ΄λ¦ : λ©μλλ₯Ό νΈμΆνκΈ° μν΄ λ©μλμ μ΄λ¦μ λΆμ¬μ£Όλ κ²μ΄λ€.λ§€κ°λ³μ λͺ©λ‘ (parameters) : λ©μλ νΈμΆ μμ μ λ¬λλ μΈμμ κ°μ μ μ₯ν λ©΄μλ€μ λͺ
μνλ€.ꡬνλΆ : λ©μλλ₯Ό ν΅ν΄ μννκ³ μΆμ μμ
μ μννλ λͺ
λ Ήλ¬Έμ μ§ν©μ΄λ€.μμ±μλ λ³μλ₯Ό μ μΈνκ³ μ΄κΈ°ννλ κ²μ²λΌ ν΄λμ€λ₯Ό μμ±νκ³ κ°μ²΄λ₯Ό νΈμΆν λ κ°μ²΄λ₯Ό μ΄κΈ°ννκΈ° μν΄ μ¬μ©νλ κ²μ΄λ€.
μμ±μλ κΈ°λ³Έμμ±μ, 묡μμ μμ±μ, λͺ
μμ μμ±μλ‘ λλλ€.
κΈ°λ³Έμμ±μ : ν΄λμ€ λ΄λΆμ λ°λ‘ μμ±μλ₯Ό μμ±νμ§ μμ κ°μ²΄ μμ±μ μ»΄νμΌλ¬κ° μλμΌλ‘ μΆκ°ν΄μ£Όλ μμ±μ묡μμ μμ±μ : νλΌλ―Έν° κ°μ κ°μ§μ§ μλ μμ±μλͺ
μμ μμ±μ : νλΌλ―Έν° κ°μ κ°μ§λ μμ±μclass Person(){
//묡μμ μμ±μ
public Person(){
System.out.println("묡μμ μμ±μ");
}
//λͺ
μμ μμ±μ
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
thisλ μ°Έμ‘°λ³μλ‘ μΈμ€ν΄μ€ μμ μ κ°λ₯΄ν¨λ€. μ£Όλ‘ μμ±μμ λ©μλμ λ§€κ°λ³μ μ΄λ¦μ΄ νλμ κ°μ κ²½μ°, λ΄κ° μ°Έμ‘°νλ €λ κ²μ΄ μΈμ€ν΄μ€ λ©€λ²μΈ νλμμ λͺ μνκ³ μ ν λ μ¬μ© λλ€.
public class Test{
int a; //Testν΄λμ€ νλμμ μ μΈλ a
void set_test(int a){ //set_test λ©μλμ λ§€κ°λ³μλ‘ μ μΈλ a
this.a = a;
}
}
λ€μμ 보면 Testν΄λμ€ νλμμ μ μΈν λ³μ aμ set_test λ©μλμ λ§€κ°λ³μ aμ μ΄λ¦μ΄ κ°λ€. μ΄λ΄λ thisλ₯Ό μ¬μ©νμ¬ this.aλ‘ aμ ꡬλΆμ ν΄μ£Όλ κ²μ΄λ€.
public class Day{
String year;
String month;
String day;
public Day(String year){
this(year,null,null);
}
public Day(String year, String month){
this(year,month,null);
}
public Day(String year, String month, String day){
this.year = year;
this.month = month;
this.day = day;
}
}
this()λ μμ±μμ μ€λ²λ‘λ©μ ν λ μ¬μ©νλ€. μ΄ μ½λμμλ 3κ°μ λ§€κ°λ³μλ₯Ό κ°λ μμ±μμ μ΄κΈ°κ°μ ν λΉνλ μμ€μ½λλ₯Ό μ μνκ³ λ€λ₯Έ μμ±μλ this()λ₯Ό μ¬μ©νμ¬ μ€λ³΅μ½λλ₯Ό μ κ±°νμλ€. this()λ₯Ό μ¬μ©ν λ μ€μν μ μ μμ±μμμλ§ μ¬μ©μ΄ κ°λ₯νκ³ λ°λμ νΈμΆνλ κ³³μ 첫λ²μ§Έ λ¬Έμ₯μμ μμ±ν΄μΌ νλ€λ κ²μ΄λ€.
Reference
λ³Έ μ€ν°λλ 2020 λ°±κΈ°μ λμ μλ°μ€ν°λμ 컀리νλΌμ μ°Έκ³ νμ¬ μ§ννκ³ μμ΅λλ€.