class Person {
private String name;
public Person(String pName) {
name = pName;
}
public void sayHello() {
System.out.println("Hi. My name is " + this.name);
}
}
class Person {
private String name;
public void setName(String name) {
// name = name;
this.name = name;
}
}
name = name;
이라는 애매한 코드가 생기게 된다. 두 name은 서로 같은 변수이며, 클래스의 인스턴스 변수가 아닌 파라미터를 가리키게 된다.
→ this
를 통해 해결
public class BankAcount {
private Person owner;
...
public BankAccount(Person owner) {
this.owner = owner;
owner.setAccount(this);
}
...
}
public Person(String name) {
this(name, 12, 0); // 12살을 기본 나이로 설정, 초기 현금 보유액은 0원.
}
public Person(String name, int age) {
this(name, age, 0); // 초기 현금 보유액은 0원.
}
public Person(String name, int age, int cashAmount) {
if (age < 0) {
this.age = 12;
} else {
this.age = age;
}
if (cashAmount < 0) {
this.cashAmount = 0;
} else {
this.cashAmount = cashAmount;
}
this.name = name;
}
첫 번째 경우의 this(name, 12, 0);
은 세 번째 생성자 Person(name, 12, 0);
에 각각의 파라미터를 넘겨 호출하는 것과 같다고 생각할 수 있고, 두 번째 경우의 this(name, age, 0);
은 Person(name, age, 0);
에 파라미터를 넘겨 호출하는것과 같다