-
만약 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() + "원"); } }
'Java > OOP' 카테고리의 다른 글
접근제어자 (0) 2022.10.20 실습 (0) 2022.10.08 생성자(Constructor) (0) 2022.10.01 메소드 오버로딩(method overloading) (0) 2022.09.24 객체 (0) 2022.09.18