Keyword Part
1. this? 이건 뭘까?
- 자기 자신의 메모리를 가르키는 역할
- 인스턴스(class로부터 나온 인스턴스)객체가 자신의 주소 반환할때 사용
- 생성자에서 다른 생성자를 호출한다?!
자기 자신의 메모리를 가르킨다?
public static void main(String[] args){
MyClass my = new Myclass();
**my.method("what"); //메소드 혹은
my.name; // "기훈" //변수**
}
- 이때 method라는 메소드 내부에 this.객체이름 = “what”으로 구현되는 코드가 동작을할때 인스턴스 내부의 필드들은 heap메모리에 인스턴스가 생성이 되는데 이때 this 키워드가 사용될시 해당 인스턴스의 heap메모리 내부에 있는 참조주소를 가르키는 역할을 한다.
- 새로운 인스턴스를 다시 만든다면 같은 메소드를 써도 새로운 인스턴스의 heap메모리 영역을 가르킨다
- 즉 새로운 인스턴스마다 새로운 위치로 저장이 된다.
return this?
public Myclass me(){
return this ;
}
# 특이점
main에서 ..
**Myclass my = new Myclass();
Myclass m = my.me();**
- 자기 자신의 주소를 반환해주는 메소드를 구현하고 이때 자기 자신의 class type으로 주소를 반환한다.
- 위 강조된 부분을 통해서 my 인스턴스와 , m 인스턴스는 같은 객체라는 것을 알수 있고 이미 생성된 my인스턴스를 통해서 자기 자신의 주소를 반환하고 m과 my는 같은 heap 메모리 영역을 가르키면서 같은 인스턴스로써 사용할수 있다.
생성자 내에서 생성자를 ?
public class Person {
String nation;
String name;
int age;
public Person() {
this(28);
System.out.println("기본 생성자 호출 됨");
}
public Person(int age) {
this("코니", age);
System.out.println("age 필드 매개변수 생성자 호출 됨");
}
public Person(String name, int age) {
this("한국",name,age);
System.out.println("name 과 age 매개변수 생성자 호출 됨");
}
public Person(String nation, String name, int age) {
this.nation = nation;
this.name = name;
this.age = age;
System.out.println("모든 필드를 초기화 하는 생성자 호출 됨");
}
}