코스웨어/11년 내장형하드웨어
20110728 일일보고서 (상속) _ 이성재
알 수 없는 사용자
2011. 7. 28. 15:40
상속을 사용하는 이유
코드의 중복을 방지하면서 재활용을 높히기위해서 사용.
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가 불러와서 모두 사용함을 알수있다.