본문 바로가기
코스웨어/11년 내장형하드웨어

20110728 일일보고서 (상속) _ 이성재

by 알 수 없는 사용자 2011. 7. 28.
728x90
반응형
상속을 사용하는 이유
코드의 중복을 방지하면서 재활용을 높히기위해서 사용.


class SuperCar extends Car {
}
를 하게되면 Car에 있는 속성들이 SuperCar클래스로 복사가된다.
exptends 는 부모클래스를 상속받는다는 의미이다.

private 멤버변수를 선언하면 접근되지 않아서 상속(복사)가 안된다.

자식클래스(SuperCar)에 메소드가 없으면 부모클래스(car)의 메소드를 찾아간다.


멤버변수를 public 으로 하면 다른사람들도 접근해서 안좋다.
 

멤버변수를 protected 로 선언하면 자식클래스가 접근가능하다. 

상속되지않는 클래스에게는 보여주지않는다. 
그래서 상속클래스를 만드려면 protected로 선언하는게 좋다.




그러면 부모클래스와 상속받은클래스 그리고 메인함수 파일을 예로 들어 다시 보겠다.

package ac.kr.busanit;

class Account {
    String accountNo;
    String ownerName;
    int balance;
  
    void deposit(int amount) {                     
        balance += amount;
    }
    int withdraw(int amount) throws Exception {
        if (balance < amount)
            throw new Exception("잔액이 부족합니다.");
        balance -= amount;
        return amount;
    }
}

Account클래스에는 멤버변수3개와 멤버메소드2개 총 5개의 멤버가 있습니다



package ac.kr.busanit;
  class CheckingAccount  extends Account  {
      String cardNo;                                          
      int pay(String cardNo, int amount) throws Exception {  
          if (!cardNo.equals(this.cardNo) || (balance < amount))
              throw new Exception("지불이 불가능합니다.");
          return withdraw(amount);
      }
  }

extends 로 Account클래스를 상속받는다.  그래서 Account는 CheckingAccount의 부모클래스가 되고
CheckingAccount클래스는 부모클래스의 맴버5개를 사용할수있으며(상속) 자신이 추가한 2개의 맴버를 
자유로이 사용할수 있게됩니다
 





package ac.kr.busanit;
    class InheritanceExample1 {
       public static void main(String args[]) {
            CheckingAccount obj = new CheckingAccount();
            obj.accountNo = "111-22-33333333";    
            obj.ownerName = "홍길동";           
            obj.cardNo = "5555-6666-7777-8888";      
            obj.deposit(100000);     
            try {
                int paidAmount = obj.pay("5555-6666-7777-8888"47000);     
                System.out.println("지불액:" + paidAmount);
                System.out.println("잔액:" + obj.balance);
            }
            catch (Exception e) {   
                String msg = e.getMessage();
                System.out.println(msg);
            }
        }
    }
메인함수를 보면은 Account부모클래스가 선언한 멤버를 
CheckingAccount가 불러와서 모두 사용함을 알수있다.

 


 


728x90