ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • this
    Java/OOP 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() + "원");
        }
    }

    '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

    댓글

Designed by Tistory.