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

+ Recent posts