Java/OOP
this
yunajoe
2022. 10. 1. 15:06
만약 paramter와 인스턴수 변수 이름이 같을떄는?! => 자바는 인식하지 못한다
this를 쓰면 된다
// 인스턴스 변수와 parameter가 다를때는 아무 문제 없당
public class PersonInfo {
// 변수 선언
private String name;
// 인스턴스 변수 name, 파라미터(parameter)는 pName
public void setName(String pName){
name = pName;
}
public String getName(){
return name;
}
}
// 인스턴스 변수와 parameter가 같을 때는 JAVA는 인식하지 못한다
public class PersonInfo {
// 변수 선언
private String name;
// 인스턴스 변수 name, 파라미터(parameter)는 pName
public void setName(String name){
name = name;
}
public String getName(){
return name;
}
}
How to solve it?!
// 이때는 this를 인스턴스 변수 앞에다가 붙여준당
public class PersonInfo {
// 변수 선언
private String name;
// 인스턴스 변수 name, 파라미터(parameter)는 pName
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
public class Main {
public static void main(String[] args){
Person p1 = new Person();
p1.setName("조연아");
}
}
실습
public class MarketGood {
// 인스턴스 변수 설정
private String name;
private int retailPrice;
private int discountRate;
// 생성자 설정
public MarketGood(String name, int retailPrice, int discountRate){
this.name = name;
this.retailPrice = retailPrice;
if(discountRate < 0 || discountRate > 100){
this.discountRate =0;
}
this.discountRate = discountRate;
}
public MarketGood(String name, int retailPrice){
this.name = name;
this.retailPrice = retailPrice;
this.discountRate = 0;
}
//getter, setter 메서드
public String getName(){
return name;
}
public int getRetailPrice(){
return retailPrice;
}
public void setDiscountRate(int discountRate){
this.discountRate = discountRate;
}
public int getDiscountRate(){
return discountRate;
}
// 메서드(할인후 가격을 return)
public int getDiscountedPrice(){
return retailPrice * (100-discountRate)/100;
}
}
public class Main {
public static void main(String[] args) {
MarketGood g1 = new MarketGood("MacBook Air", 1250000);
MarketGood g2 = new MarketGood("MacBook Pro", 2990000, 15);
MarketGood g3 = new MarketGood("iPhone 7", 920000, 20);
System.out.println(g1.getName() + "의 할인율: " + g1.getDiscountRate() + "%");
System.out.println(g2.getName() + "의 할인율: " + g2.getDiscountRate() + "%");
System.out.println(g3.getName() + "의 정상 가격: " + g3.getRetailPrice() + "원");
System.out.println(g3.getName() + "의 할인 가격: " + g3.getDiscountedPrice() + "원");
System.out.println("경쟁 업체가 많아져서 " + g3.getName() + "의 할인율이 35%로 올랐습니다.");
g3.setDiscountRate(35);
System.out.println(g3.getName() + "의 할인 가격: " + g3.getDiscountedPrice() + "원");
}
}