this 는 메소드에서 현재 인스턴스를 가리키는 역할을 한다.
메소드에서 사용하면 클래스의 인스턴스 변수와 파라미터 변수가 같을 때 구분해줄 수 있는데, 생성자에서도 사용할 수 있다. 오늘 기억해야 할건 생성자로서 사용할 때.
생성자에서 사용하는 것과 생성자로서 사용하는건 다르다.
생성자에서 사용하는 것 중에 알아둬야할 건
public class BankAccount{
public BankAccount(Person owner){
this.owner = owner;
owner.setAccount(this);
}
}
이렇게 쓰는 것. 생성자로 은행계좌를 만들어줄 때 입력받은 사람을 주인으로 설정하게 해놨다.
생성자로서 사용할 때
public Person(String name) {
this.name = name
age = 12;
cashAmount = 0;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
cashAmount = 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;
}
이렇게 작성해놓은 것을
public Person(String name){
this(name, 12, 0);
}
public Person(String name, int age){
this.(name, age, 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;
}
요렇게 바꿔서 파라미터가 가장 적은 쪽에서 큰쪽을 호출하는 식으로 만들 수 있다.
그리고 실습을 했는데 딱히 어려운건 없었고... 코드잇 내 실습 창에서 하면 어디가 틀렸는지 모르니까 역시 ide에서 하는 것이 편한 것 같다. 프로젝트 만들기는 귀찮지만(읍읍
아 자동채점이라 맞았다고 넘어가긴 했는데 해설을 봤더니 내 코드에 빼먹은게 있었다.
이번 실습은 물건 가격과 할인율을 받아서 할인된 가격을 출력하는 건데, 할인율을 계산할 때 double로 형변환을 안해줬다.
public int getDiscountedPrice(){
return retailPrice - (retailPrice * discountRate / 100);
}
나는 그냥 이렇게 해줬는데, discountRate가 17, 28처럼 더러운(...)수가 되면 틀리겠다 싶다.
그리고 저 식도 좀더 깔끔하게 써줄 수 있네.. 보니까
public int getDiscountedPrice(){
return (int) (retailPrice * (1 - discountRate / 100.0));
}
100.0으로 나눠서 double로 형변환을 해줬고, 리턴할 때 다시 int로 형변환.
그리고 식도 retailPrice로 묶어줬다. 저거 곱셈공식이던가...? 이걸 여기서 써먹네......
이 다음챕터는 계속 문제인데 내일할까 지금할까... 고민고민곰인고민고민고
그렇게 많이한건 아니지만... 원래 내일 일은 내일로 미루는게 맞다!
'210525~220812' 카테고리의 다른 글
#19 문제풀이2 210612 (0) | 2021.06.13 |
---|---|
#18 문제풀이1 210611 (0) | 2021.06.12 |
#16 생성자 210609 (0) | 2021.06.10 |
#15 ㅋㅋㅋㅋㅋㅋㅋㅋ 210608 (0) | 2021.06.09 |
#14 염기서열 해결+ 210607 (0) | 2021.06.08 |