JAVA/JAVA_1

Chap09_01.상속(Inheritance)

RoarinGom 2021. 1. 28. 18:39

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;

(부모→자식 으로 강제 데이터 타입 형변환)

-강제형변환 : 원래 자식이 가지고 있는 매서드 다 사용 가능

(원래 자식클래스 타입인 것만 가능, 처음부터 부모타입이 자식타입으로 강제 형변환은 불가능)