Chap09_01.상속(Inheritance)
Object 객체는 모든 객체의 부모!!
자바의 확장성
- 오버라이딩
부모의 메서드의 일부가 변경되어서 자식 클래스에서 매서드에 맞게 변경하여 사용 할 수 있다 (매서드명 동일)
-오브젝트 형변환(자식데이터→부모데이터 로 바꿀수있다)
: 생성된 객체는 자식인데, 그 자식 객체의 데이터 타입을 부모 데이터 타입으로 저장할 수 있다
why? 부모 데이터 타입의 배열에 부모, 자식 섞어서 저장할 수 있다 (배열에 저장 가능)
한 곳에 모으려면 하나의 공통의 데이터 타입이 필요. 그것이 부모 데이터 타입!!
주의!!——————————————————————————————-
형변환하면 overriding 한 매서드는 이용가능하다.
But 자식클래스만 가지고 있는 매서드를 호출할 수없다
- 자바의 다형성
:조건
1. 부모 자식 상속관계
2. overriding 된 객체 가지고 있어야한다
3. 그러면 부모 안에 넣을 수 있다
자식,자손(child class, sub class) 부모,조상(parent class, super class)
Why 왜 상속이 필요한가??
-기존 클래스와 유사하면서 새로운 것을 추가하거나 변경해야 할 때 이용 처음 코딩할 때,
뭐를 만들지 고민하기 보다 상속 받아야지 고민한다 부모 클래스 상속받아서 가져다 쓰겠다!!!
ex)
멀티쓰레드, 서블릿(httpsevlet 상속)
우리의 일상과 비슷(객체지향언어는 우리의 현실세계를 모방했기때문에)
문법:
class 자식클래스 extencds 상속할 부모클래스{}
super => 자식클래스에서 부모객체를 가르킨다
super() ⇒ 자식클래스에서 부모의 생성자를 호출
this⇒ 현재 자신의 객체를 가르키는 것
this() ⇒ 자신의 생성자에서 다른 생성자를 호출
추가 설명)
ex)Account account=new CheckingAccount(); < == > CheckingAccount account=new CheckingAccount();
Account account2=account; :account2는 CheckingAccount의 객체를 생성!
account2의 데이터 타입은 Account 클래스 타입이다!! (자식→부모 로 데이터 타입 형변환)
: 오버라이딩한 매서드만 사용가능 CheckingAccount ca=(CheckingAccount)account2;
(부모→자식 으로 강제 데이터 타입 형변환)
-강제형변환 : 원래 자식이 가지고 있는 매서드 다 사용 가능
(원래 자식클래스 타입인 것만 가능, 처음부터 부모타입이 자식타입으로 강제 형변환은 불가능)